@alienkarma/exceljs 4.4.0-fork.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 +22 -0
- package/README.md +3024 -0
- package/README_zh.md +2878 -0
- package/dist/LICENSE +22 -0
- package/dist/es5/csv/csv.js +182 -0
- package/dist/es5/csv/csv.js.map +1 -0
- package/dist/es5/csv/line-buffer.js +68 -0
- package/dist/es5/csv/line-buffer.js.map +1 -0
- package/dist/es5/csv/stream-converter.js +110 -0
- package/dist/es5/csv/stream-converter.js.map +1 -0
- package/dist/es5/doc/anchor.js +73 -0
- package/dist/es5/doc/anchor.js.map +1 -0
- package/dist/es5/doc/cell.js +960 -0
- package/dist/es5/doc/cell.js.map +1 -0
- package/dist/es5/doc/column.js +274 -0
- package/dist/es5/doc/column.js.map +1 -0
- package/dist/es5/doc/data-validations.js +18 -0
- package/dist/es5/doc/data-validations.js.map +1 -0
- package/dist/es5/doc/defined-names.js +173 -0
- package/dist/es5/doc/defined-names.js.map +1 -0
- package/dist/es5/doc/enums.js +49 -0
- package/dist/es5/doc/enums.js.map +1 -0
- package/dist/es5/doc/image.js +69 -0
- package/dist/es5/doc/image.js.map +1 -0
- package/dist/es5/doc/modelcontainer.js +16 -0
- package/dist/es5/doc/modelcontainer.js.map +1 -0
- package/dist/es5/doc/note.js +64 -0
- package/dist/es5/doc/note.js.map +1 -0
- package/dist/es5/doc/pivot-table.js +137 -0
- package/dist/es5/doc/pivot-table.js.map +1 -0
- package/dist/es5/doc/range.js +229 -0
- package/dist/es5/doc/range.js.map +1 -0
- package/dist/es5/doc/row.js +382 -0
- package/dist/es5/doc/row.js.map +1 -0
- package/dist/es5/doc/table.js +441 -0
- package/dist/es5/doc/table.js.map +1 -0
- package/dist/es5/doc/workbook.js +205 -0
- package/dist/es5/doc/workbook.js.map +1 -0
- package/dist/es5/doc/worksheet.js +918 -0
- package/dist/es5/doc/worksheet.js.map +1 -0
- package/dist/es5/exceljs.bare.js +14 -0
- package/dist/es5/exceljs.bare.js.map +1 -0
- package/dist/es5/exceljs.browser.js +36 -0
- package/dist/es5/exceljs.browser.js.map +1 -0
- package/dist/es5/exceljs.nodejs.js +15 -0
- package/dist/es5/exceljs.nodejs.js.map +1 -0
- package/dist/es5/index.js +15 -0
- package/dist/es5/stream/xlsx/hyperlink-reader.js +90 -0
- package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
- package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/sheet-rels-writer.js +94 -0
- package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/workbook-reader.js +362 -0
- package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/workbook-writer.js +347 -0
- package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -0
- package/dist/es5/stream/xlsx/worksheet-reader.js +392 -0
- package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -0
- package/dist/es5/stream/xlsx/worksheet-writer.js +652 -0
- package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -0
- package/dist/es5/utils/auto-drain.js +18 -0
- package/dist/es5/utils/auto-drain.js.map +1 -0
- package/dist/es5/utils/browser-buffer-decode.js +15 -0
- package/dist/es5/utils/browser-buffer-decode.js.map +1 -0
- package/dist/es5/utils/browser-buffer-encode.js +18 -0
- package/dist/es5/utils/browser-buffer-encode.js.map +1 -0
- package/dist/es5/utils/cell-matrix.js +149 -0
- package/dist/es5/utils/cell-matrix.js.map +1 -0
- package/dist/es5/utils/col-cache.js +258 -0
- package/dist/es5/utils/col-cache.js.map +1 -0
- package/dist/es5/utils/copy-style.js +43 -0
- package/dist/es5/utils/copy-style.js.map +1 -0
- package/dist/es5/utils/encryptor.js +58 -0
- package/dist/es5/utils/encryptor.js.map +1 -0
- package/dist/es5/utils/iterate-stream.js +46 -0
- package/dist/es5/utils/iterate-stream.js.map +1 -0
- package/dist/es5/utils/parse-sax.js +47 -0
- package/dist/es5/utils/parse-sax.js.map +1 -0
- package/dist/es5/utils/shared-formula.js +42 -0
- package/dist/es5/utils/shared-formula.js.map +1 -0
- package/dist/es5/utils/shared-strings.js +32 -0
- package/dist/es5/utils/shared-strings.js.map +1 -0
- package/dist/es5/utils/stream-base64.js +66 -0
- package/dist/es5/utils/stream-base64.js.map +1 -0
- package/dist/es5/utils/stream-buf.js +343 -0
- package/dist/es5/utils/stream-buf.js.map +1 -0
- package/dist/es5/utils/string-buf.js +73 -0
- package/dist/es5/utils/string-buf.js.map +1 -0
- package/dist/es5/utils/string-builder.js +32 -0
- package/dist/es5/utils/string-builder.js.map +1 -0
- package/dist/es5/utils/stuttered-pipe.js +61 -0
- package/dist/es5/utils/stuttered-pipe.js.map +1 -0
- package/dist/es5/utils/typed-stack.js +23 -0
- package/dist/es5/utils/typed-stack.js.map +1 -0
- package/dist/es5/utils/under-dash.js +168 -0
- package/dist/es5/utils/under-dash.js.map +1 -0
- package/dist/es5/utils/utils.js +204 -0
- package/dist/es5/utils/utils.js.map +1 -0
- package/dist/es5/utils/xml-stream.js +151 -0
- package/dist/es5/utils/xml-stream.js.map +1 -0
- package/dist/es5/utils/zip-stream.js +79 -0
- package/dist/es5/utils/zip-stream.js.map +1 -0
- package/dist/es5/xlsx/defaultnumformats.js +230 -0
- package/dist/es5/xlsx/defaultnumformats.js.map +1 -0
- package/dist/es5/xlsx/rel-type.js +21 -0
- package/dist/es5/xlsx/rel-type.js.map +1 -0
- package/dist/es5/xlsx/xform/base-xform.js +139 -0
- package/dist/es5/xlsx/xform/base-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
- package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
- package/dist/es5/xlsx/xform/book/sheet-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
- package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
- package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
- package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
- package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/book/workbook-xform.js +241 -0
- package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/comment-xform.js +103 -0
- package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
- package/dist/es5/xlsx/xform/comment/comments-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
- package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
- package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
- package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +97 -0
- package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +107 -0
- package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +92 -0
- package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +61 -0
- package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/composite-xform.js +51 -0
- package/dist/es5/xlsx/xform/composite-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
- package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
- package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/app-xform.js +93 -0
- package/dist/es5/xlsx/xform/core/app-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/content-types-xform.js +127 -0
- package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/core-xform.js +158 -0
- package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
- package/dist/es5/xlsx/xform/core/relationship-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
- package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
- package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
- package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/blip-xform.js +39 -0
- package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
- package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
- package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
- package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
- package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
- package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
- package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
- package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
- package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
- package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
- package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +1 -0
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
- package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/list-xform.js +91 -0
- package/dist/es5/xlsx/xform/list-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js +48 -0
- package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +73 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +93 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +176 -0
- package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
- package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cell-xform.js +450 -0
- package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +275 -0
- package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
- package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
- package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +45 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
- package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +42 -0
- package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
- package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +43 -0
- package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +28 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +88 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +75 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +66 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
- package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
- package/dist/es5/xlsx/xform/sheet/col-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +247 -0
- package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
- package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
- package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
- package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
- package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
- package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/merges.js +52 -0
- package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
- package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
- package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
- package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
- package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
- package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +37 -0
- package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/row-xform.js +128 -0
- package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +51 -0
- package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
- package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
- package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
- package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
- package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +522 -0
- package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
- package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
- package/dist/es5/xlsx/xform/simple/date-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
- package/dist/es5/xlsx/xform/simple/float-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
- package/dist/es5/xlsx/xform/simple/integer-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
- package/dist/es5/xlsx/xform/simple/string-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/static-xform.js +61 -0
- package/dist/es5/xlsx/xform/static-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +98 -0
- package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
- package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js +99 -0
- package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +114 -0
- package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
- package/dist/es5/xlsx/xform/strings/text-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
- package/dist/es5/xlsx/xform/style/alignment-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/border-xform.js +185 -0
- package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/color-xform.js +66 -0
- package/dist/es5/xlsx/xform/style/color-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
- package/dist/es5/xlsx/xform/style/dxf-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/fill-xform.js +307 -0
- package/dist/es5/xlsx/xform/style/fill-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/font-xform.js +175 -0
- package/dist/es5/xlsx/xform/style/font-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/numfmt-xform.js +58 -0
- package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
- package/dist/es5/xlsx/xform/style/protection-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/style-xform.js +118 -0
- package/dist/es5/xlsx/xform/style/style-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/styles-xform.js +611 -0
- package/dist/es5/xlsx/xform/style/styles-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
- package/dist/es5/xlsx/xform/style/underline-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
- package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
- package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/filter-column-xform.js +89 -0
- package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
- package/dist/es5/xlsx/xform/table/filter-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-column-xform.js +42 -0
- package/dist/es5/xlsx/xform/table/table-column-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js +40 -0
- package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +1 -0
- package/dist/es5/xlsx/xform/table/table-xform.js +122 -0
- package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -0
- package/dist/es5/xlsx/xlsx.js +775 -0
- package/dist/es5/xlsx/xlsx.js.map +1 -0
- package/dist/es5/xlsx/xml/theme1.js +5 -0
- package/dist/es5/xlsx/xml/theme1.js.map +1 -0
- package/dist/exceljs.bare.js +57759 -0
- package/dist/exceljs.bare.js.map +777 -0
- package/dist/exceljs.bare.min.js +45 -0
- package/dist/exceljs.bare.min.js.map +1 -0
- package/dist/exceljs.js +62398 -0
- package/dist/exceljs.js.map +1095 -0
- package/dist/exceljs.min.js +45 -0
- package/dist/exceljs.min.js.map +1 -0
- package/excel.js +13 -0
- package/index.d.ts +2040 -0
- package/index.ts +2 -0
- package/lib/csv/csv.js +191 -0
- package/lib/csv/line-buffer.js +74 -0
- package/lib/csv/stream-converter.js +135 -0
- package/lib/doc/anchor.js +91 -0
- package/lib/doc/cell.js +1124 -0
- package/lib/doc/column.js +320 -0
- package/lib/doc/data/theme1.json +234 -0
- package/lib/doc/data-validations.js +19 -0
- package/lib/doc/defined-names.js +196 -0
- package/lib/doc/enums.js +48 -0
- package/lib/doc/image.js +59 -0
- package/lib/doc/modelcontainer.js +18 -0
- package/lib/doc/note.js +65 -0
- package/lib/doc/pivot-table.js +132 -0
- package/lib/doc/range.js +257 -0
- package/lib/doc/row.js +415 -0
- package/lib/doc/table.js +465 -0
- package/lib/doc/workbook.js +224 -0
- package/lib/doc/worksheet.js +949 -0
- package/lib/exceljs.bare.js +13 -0
- package/lib/exceljs.browser.js +36 -0
- package/lib/exceljs.nodejs.js +14 -0
- package/lib/stream/xlsx/hyperlink-reader.js +83 -0
- package/lib/stream/xlsx/sheet-comments-writer.js +121 -0
- package/lib/stream/xlsx/sheet-rels-writer.js +119 -0
- package/lib/stream/xlsx/workbook-reader.js +337 -0
- package/lib/stream/xlsx/workbook-writer.js +347 -0
- package/lib/stream/xlsx/worksheet-reader.js +374 -0
- package/lib/stream/xlsx/worksheet-writer.js +717 -0
- package/lib/utils/auto-drain.js +15 -0
- package/lib/utils/browser-buffer-decode.js +14 -0
- package/lib/utils/browser-buffer-encode.js +15 -0
- package/lib/utils/cell-matrix.js +165 -0
- package/lib/utils/col-cache.js +287 -0
- package/lib/utils/copy-style.js +43 -0
- package/lib/utils/encryptor.js +55 -0
- package/lib/utils/iterate-stream.js +48 -0
- package/lib/utils/parse-sax.js +30 -0
- package/lib/utils/shared-formula.js +44 -0
- package/lib/utils/shared-strings.js +35 -0
- package/lib/utils/stream-base64.js +72 -0
- package/lib/utils/stream-buf.js +364 -0
- package/lib/utils/string-buf.js +82 -0
- package/lib/utils/string-builder.js +35 -0
- package/lib/utils/stuttered-pipe.js +67 -0
- package/lib/utils/typed-stack.js +24 -0
- package/lib/utils/under-dash.js +184 -0
- package/lib/utils/utils.js +205 -0
- package/lib/utils/xml-stream.js +169 -0
- package/lib/utils/zip-stream.js +87 -0
- package/lib/xlsx/.rels +11 -0
- package/lib/xlsx/calcChain.xml +6 -0
- package/lib/xlsx/core.xml +7 -0
- package/lib/xlsx/defaultnumformats.js +153 -0
- package/lib/xlsx/rel-type.js +20 -0
- package/lib/xlsx/styles.xml +41 -0
- package/lib/xlsx/workbook.xml +16 -0
- package/lib/xlsx/xform/base-xform.js +145 -0
- package/lib/xlsx/xform/book/defined-name-xform.js +91 -0
- package/lib/xlsx/xform/book/sheet-xform.js +34 -0
- package/lib/xlsx/xform/book/workbook-calc-properties-xform.js +26 -0
- package/lib/xlsx/xform/book/workbook-pivot-cache-xform.js +29 -0
- package/lib/xlsx/xform/book/workbook-properties-xform.js +29 -0
- package/lib/xlsx/xform/book/workbook-view-xform.js +53 -0
- package/lib/xlsx/xform/book/workbook-xform.js +259 -0
- package/lib/xlsx/xform/comment/comment-xform.js +105 -0
- package/lib/xlsx/xform/comment/comments-xform.js +82 -0
- package/lib/xlsx/xform/comment/style/vml-position-xform.js +39 -0
- package/lib/xlsx/xform/comment/style/vml-protection-xform.js +36 -0
- package/lib/xlsx/xform/comment/vml-anchor-xform.js +60 -0
- package/lib/xlsx/xform/comment/vml-client-data-xform.js +95 -0
- package/lib/xlsx/xform/comment/vml-notes-xform.js +107 -0
- package/lib/xlsx/xform/comment/vml-shape-xform.js +95 -0
- package/lib/xlsx/xform/comment/vml-textbox-xform.js +64 -0
- package/lib/xlsx/xform/composite-xform.js +56 -0
- package/lib/xlsx/xform/core/app-heading-pairs-xform.js +32 -0
- package/lib/xlsx/xform/core/app-titles-of-parts-xform.js +28 -0
- package/lib/xlsx/xform/core/app-xform.js +100 -0
- package/lib/xlsx/xform/core/content-types-xform.js +135 -0
- package/lib/xlsx/xform/core/core-xform.js +136 -0
- package/lib/xlsx/xform/core/relationship-xform.js +25 -0
- package/lib/xlsx/xform/core/relationships-xform.js +73 -0
- package/lib/xlsx/xform/drawing/base-cell-anchor-xform.js +48 -0
- package/lib/xlsx/xform/drawing/blip-fill-xform.js +71 -0
- package/lib/xlsx/xform/drawing/blip-xform.js +42 -0
- package/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js +38 -0
- package/lib/xlsx/xform/drawing/c-nv-pr-xform.js +68 -0
- package/lib/xlsx/xform/drawing/cell-position-xform.js +77 -0
- package/lib/xlsx/xform/drawing/drawing-xform.js +109 -0
- package/lib/xlsx/xform/drawing/ext-lst-xform.js +43 -0
- package/lib/xlsx/xform/drawing/ext-xform.js +44 -0
- package/lib/xlsx/xform/drawing/hlink-click-xform.js +41 -0
- package/lib/xlsx/xform/drawing/nv-pic-pr-xform.js +65 -0
- package/lib/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
- package/lib/xlsx/xform/drawing/pic-xform.js +77 -0
- package/lib/xlsx/xform/drawing/sp-pr.js +17 -0
- package/lib/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
- package/lib/xlsx/xform/list-xform.js +95 -0
- package/lib/xlsx/xform/pivot-table/cache-field.js +43 -0
- package/lib/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +77 -0
- package/lib/xlsx/xform/pivot-table/pivot-cache-records-xform.js +103 -0
- package/lib/xlsx/xform/pivot-table/pivot-table-xform.js +189 -0
- package/lib/xlsx/xform/sheet/auto-filter-xform.js +38 -0
- package/lib/xlsx/xform/sheet/cell-xform.js +498 -0
- package/lib/xlsx/xform/sheet/cf/cf-rule-xform.js +301 -0
- package/lib/xlsx/xform/sheet/cf/cfvo-xform.js +27 -0
- package/lib/xlsx/xform/sheet/cf/color-scale-xform.js +45 -0
- package/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js +48 -0
- package/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js +92 -0
- package/lib/xlsx/xform/sheet/cf/databar-xform.js +49 -0
- package/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +87 -0
- package/lib/xlsx/xform/sheet/cf/formula-xform.js +25 -0
- package/lib/xlsx/xform/sheet/cf/icon-set-xform.js +47 -0
- package/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +27 -0
- package/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +98 -0
- package/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +43 -0
- package/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +62 -0
- package/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +50 -0
- package/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +98 -0
- package/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js +25 -0
- package/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +73 -0
- package/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +25 -0
- package/lib/xlsx/xform/sheet/col-xform.js +86 -0
- package/lib/xlsx/xform/sheet/data-validations-xform.js +257 -0
- package/lib/xlsx/xform/sheet/dimension-xform.js +29 -0
- package/lib/xlsx/xform/sheet/drawing-xform.js +33 -0
- package/lib/xlsx/xform/sheet/ext-lst-xform.js +86 -0
- package/lib/xlsx/xform/sheet/header-footer-xform.js +146 -0
- package/lib/xlsx/xform/sheet/hyperlink-xform.js +54 -0
- package/lib/xlsx/xform/sheet/merge-cell-xform.js +27 -0
- package/lib/xlsx/xform/sheet/merges.js +56 -0
- package/lib/xlsx/xform/sheet/outline-properties-xform.js +43 -0
- package/lib/xlsx/xform/sheet/page-breaks-xform.js +27 -0
- package/lib/xlsx/xform/sheet/page-margins-xform.js +49 -0
- package/lib/xlsx/xform/sheet/page-setup-properties-xform.js +35 -0
- package/lib/xlsx/xform/sheet/page-setup-xform.js +103 -0
- package/lib/xlsx/xform/sheet/picture-xform.js +33 -0
- package/lib/xlsx/xform/sheet/print-options-xform.js +49 -0
- package/lib/xlsx/xform/sheet/row-breaks-xform.js +39 -0
- package/lib/xlsx/xform/sheet/row-xform.js +142 -0
- package/lib/xlsx/xform/sheet/sheet-format-properties-xform.js +55 -0
- package/lib/xlsx/xform/sheet/sheet-properties-xform.js +90 -0
- package/lib/xlsx/xform/sheet/sheet-protection-xform.js +89 -0
- package/lib/xlsx/xform/sheet/sheet-view-xform.js +202 -0
- package/lib/xlsx/xform/sheet/table-part-xform.js +33 -0
- package/lib/xlsx/xform/sheet/worksheet-xform.js +548 -0
- package/lib/xlsx/xform/simple/boolean-xform.js +31 -0
- package/lib/xlsx/xform/simple/date-xform.js +66 -0
- package/lib/xlsx/xform/simple/float-xform.js +51 -0
- package/lib/xlsx/xform/simple/integer-xform.js +57 -0
- package/lib/xlsx/xform/simple/string-xform.js +51 -0
- package/lib/xlsx/xform/static-xform.js +64 -0
- package/lib/xlsx/xform/strings/phonetic-text-xform.js +98 -0
- package/lib/xlsx/xform/strings/rich-text-xform.js +101 -0
- package/lib/xlsx/xform/strings/shared-string-xform.js +102 -0
- package/lib/xlsx/xform/strings/shared-strings-xform.js +127 -0
- package/lib/xlsx/xform/strings/text-xform.js +44 -0
- package/lib/xlsx/xform/style/alignment-xform.js +172 -0
- package/lib/xlsx/xform/style/border-xform.js +207 -0
- package/lib/xlsx/xform/style/color-xform.js +63 -0
- package/lib/xlsx/xform/style/dxf-xform.js +111 -0
- package/lib/xlsx/xform/style/fill-xform.js +364 -0
- package/lib/xlsx/xform/style/font-xform.js +102 -0
- package/lib/xlsx/xform/style/numfmt-xform.js +63 -0
- package/lib/xlsx/xform/style/protection-xform.js +60 -0
- package/lib/xlsx/xform/style/style-xform.js +125 -0
- package/lib/xlsx/xform/style/styles-xform.js +527 -0
- package/lib/xlsx/xform/style/underline-xform.js +47 -0
- package/lib/xlsx/xform/table/auto-filter-xform.js +81 -0
- package/lib/xlsx/xform/table/custom-filter-xform.js +33 -0
- package/lib/xlsx/xform/table/filter-column-xform.js +96 -0
- package/lib/xlsx/xform/table/filter-xform.js +31 -0
- package/lib/xlsx/xform/table/table-column-xform.js +44 -0
- package/lib/xlsx/xform/table/table-style-info-xform.js +41 -0
- package/lib/xlsx/xform/table/table-xform.js +131 -0
- package/lib/xlsx/xlsx.js +774 -0
- package/lib/xlsx/xml/theme1.js +3 -0
- package/lib/xlsx/xml/theme1.xml +318 -0
- package/package.json +149 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.js","names":["colCache","require","_","Enums","slideFormula","Note","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","numFmt","value","font","alignment","border","fill","protection","rowStyle","colStyle","number","col","$col$row","letter","type","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","Merge","merge","master","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","name","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","find","add","model","comment","fromModel","ValueType","NullValue","cell","NumberValue","Number","StringValue","replace","RichTextValue","richText","map","t","join","RichText","DateValue","Date","toISOString","HyperlinkValue","undefined","tooltip","MergeValue","_master","FormulaValue","Formula","shareType","ref","sharedFormula","_copyModel","copy","cp","validate","dependencies","ranges","match","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","_translatedFormula","findCell","SharedStringValue","SharedString","BooleanValue","Boolean","ErrorValue","error","JSONValue","JSON","stringify","rawValue","sharedString","types","f","reduce","p","T","module","exports"],"sources":["../../../lib/doc/cell.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\r\nconst colCache = require('../utils/col-cache');\r\nconst _ = require('../utils/under-dash');\r\nconst Enums = require('./enums');\r\nconst {slideFormula} = require('../utils/shared-formula');\r\nconst Note = require('./note');\r\n// Cell requirements\r\n// Operate inside a worksheet\r\n// Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.\r\n// Manage/use and manipulate cell format either as local to cell or inherited from column or row.\r\n\r\nclass Cell {\r\n constructor(row, column, address) {\r\n if (!row || !column) {\r\n throw new Error('A Cell needs a Row');\r\n }\r\n\r\n this._row = row;\r\n this._column = column;\r\n\r\n colCache.validateAddress(address);\r\n this._address = address;\r\n\r\n // TODO: lazy evaluation of this._value\r\n this._value = Value.create(Cell.Types.Null, this);\r\n\r\n this.style = this._mergeStyle(row.style, column.style, {});\r\n\r\n this._mergeCount = 0;\r\n }\r\n\r\n get worksheet() {\r\n return this._row.worksheet;\r\n }\r\n\r\n get workbook() {\r\n return this._row.worksheet.workbook;\r\n }\r\n\r\n // help GC by removing cyclic (and other) references\r\n destroy() {\r\n delete this.style;\r\n delete this._value;\r\n delete this._row;\r\n delete this._column;\r\n delete this._address;\r\n }\r\n\r\n // =========================================================================\r\n // Styles stuff\r\n get numFmt() {\r\n return this.style.numFmt;\r\n }\r\n\r\n set numFmt(value) {\r\n this.style.numFmt = value;\r\n }\r\n\r\n get font() {\r\n return this.style.font;\r\n }\r\n\r\n set font(value) {\r\n this.style.font = value;\r\n }\r\n\r\n get alignment() {\r\n return this.style.alignment;\r\n }\r\n\r\n set alignment(value) {\r\n this.style.alignment = value;\r\n }\r\n\r\n get border() {\r\n return this.style.border;\r\n }\r\n\r\n set border(value) {\r\n this.style.border = value;\r\n }\r\n\r\n get fill() {\r\n return this.style.fill;\r\n }\r\n\r\n set fill(value) {\r\n this.style.fill = value;\r\n }\r\n\r\n get protection() {\r\n return this.style.protection;\r\n }\r\n\r\n set protection(value) {\r\n this.style.protection = value;\r\n }\r\n\r\n _mergeStyle(rowStyle, colStyle, style) {\r\n const numFmt = (rowStyle && rowStyle.numFmt) || (colStyle && colStyle.numFmt);\r\n if (numFmt) style.numFmt = numFmt;\r\n\r\n const font = (rowStyle && rowStyle.font) || (colStyle && colStyle.font);\r\n if (font) style.font = font;\r\n\r\n const alignment = (rowStyle && rowStyle.alignment) || (colStyle && colStyle.alignment);\r\n if (alignment) style.alignment = alignment;\r\n\r\n const border = (rowStyle && rowStyle.border) || (colStyle && colStyle.border);\r\n if (border) style.border = border;\r\n\r\n const fill = (rowStyle && rowStyle.fill) || (colStyle && colStyle.fill);\r\n if (fill) style.fill = fill;\r\n\r\n const protection = (rowStyle && rowStyle.protection) || (colStyle && colStyle.protection);\r\n if (protection) style.protection = protection;\r\n\r\n return style;\r\n }\r\n\r\n // =========================================================================\r\n // return the address for this cell\r\n get address() {\r\n return this._address;\r\n }\r\n\r\n get row() {\r\n return this._row.number;\r\n }\r\n\r\n get col() {\r\n return this._column.number;\r\n }\r\n\r\n get $col$row() {\r\n return `$${this._column.letter}$${this.row}`;\r\n }\r\n\r\n // =========================================================================\r\n // Value stuff\r\n\r\n get type() {\r\n return this._value.type;\r\n }\r\n\r\n get effectiveType() {\r\n return this._value.effectiveType;\r\n }\r\n\r\n toCsvString() {\r\n return this._value.toCsvString();\r\n }\r\n\r\n // =========================================================================\r\n // Merge stuff\r\n\r\n addMergeRef() {\r\n this._mergeCount++;\r\n }\r\n\r\n releaseMergeRef() {\r\n this._mergeCount--;\r\n }\r\n\r\n get isMerged() {\r\n return this._mergeCount > 0 || this.type === Cell.Types.Merge;\r\n }\r\n\r\n merge(master, ignoreStyle) {\r\n this._value.release();\r\n this._value = Value.create(Cell.Types.Merge, this, master);\r\n if (!ignoreStyle) {\r\n this.style = master.style;\r\n }\r\n }\r\n\r\n unmerge() {\r\n if (this.type === Cell.Types.Merge) {\r\n this._value.release();\r\n this._value = Value.create(Cell.Types.Null, this);\r\n this.style = this._mergeStyle(this._row.style, this._column.style, {});\r\n }\r\n }\r\n\r\n isMergedTo(master) {\r\n if (this._value.type !== Cell.Types.Merge) return false;\r\n return this._value.isMergedTo(master);\r\n }\r\n\r\n get master() {\r\n if (this.type === Cell.Types.Merge) {\r\n return this._value.master;\r\n }\r\n return this; // an unmerged cell is its own master\r\n }\r\n\r\n get isHyperlink() {\r\n return this._value.type === Cell.Types.Hyperlink;\r\n }\r\n\r\n get hyperlink() {\r\n return this._value.hyperlink;\r\n }\r\n\r\n // return the value\r\n get value() {\r\n return this._value.value;\r\n }\r\n\r\n // set the value - can be number, string or raw\r\n set value(v) {\r\n // special case - merge cells set their master's value\r\n if (this.type === Cell.Types.Merge) {\r\n this._value.master.value = v;\r\n return;\r\n }\r\n\r\n this._value.release();\r\n\r\n // assign value\r\n this._value = Value.create(Value.getType(v), this, v);\r\n }\r\n\r\n get note() {\r\n return this._comment && this._comment.note;\r\n }\r\n\r\n set note(note) {\r\n this._comment = new Note(note);\r\n }\r\n\r\n get text() {\r\n return this._value.toString();\r\n }\r\n\r\n get html() {\r\n return _.escapeHtml(this.text);\r\n }\r\n\r\n toString() {\r\n return this.text;\r\n }\r\n\r\n _upgradeToHyperlink(hyperlink) {\r\n // if this cell is a string, turn it into a Hyperlink\r\n if (this.type === Cell.Types.String) {\r\n this._value = Value.create(Cell.Types.Hyperlink, this, {\r\n text: this._value.value,\r\n hyperlink,\r\n });\r\n }\r\n }\r\n\r\n // =========================================================================\r\n // Formula stuff\r\n get formula() {\r\n return this._value.formula;\r\n }\r\n\r\n get result() {\r\n return this._value.result;\r\n }\r\n\r\n get formulaType() {\r\n return this._value.formulaType;\r\n }\r\n\r\n // =========================================================================\r\n // Name stuff\r\n get fullAddress() {\r\n const {worksheet} = this._row;\r\n return {\r\n sheetName: worksheet.name,\r\n address: this.address,\r\n row: this.row,\r\n col: this.col,\r\n };\r\n }\r\n\r\n get name() {\r\n return this.names[0];\r\n }\r\n\r\n set name(value) {\r\n this.names = [value];\r\n }\r\n\r\n get names() {\r\n return this.workbook.definedNames.getNamesEx(this.fullAddress);\r\n }\r\n\r\n set names(value) {\r\n const {definedNames} = this.workbook;\r\n definedNames.removeAllNames(this.fullAddress);\r\n value.forEach(name => {\r\n definedNames.addEx(this.fullAddress, name);\r\n });\r\n }\r\n\r\n addName(name) {\r\n this.workbook.definedNames.addEx(this.fullAddress, name);\r\n }\r\n\r\n removeName(name) {\r\n this.workbook.definedNames.removeEx(this.fullAddress, name);\r\n }\r\n\r\n removeAllNames() {\r\n this.workbook.definedNames.removeAllNames(this.fullAddress);\r\n }\r\n\r\n // =========================================================================\r\n // Data Validation stuff\r\n get _dataValidations() {\r\n return this.worksheet.dataValidations;\r\n }\r\n\r\n get dataValidation() {\r\n return this._dataValidations.find(this.address);\r\n }\r\n\r\n set dataValidation(value) {\r\n this._dataValidations.add(this.address, value);\r\n }\r\n\r\n // =========================================================================\r\n // Model stuff\r\n\r\n get model() {\r\n const {model} = this._value;\r\n model.style = this.style;\r\n if (this._comment) {\r\n model.comment = this._comment.model;\r\n }\r\n return model;\r\n }\r\n\r\n set model(value) {\r\n this._value.release();\r\n this._value = Value.create(value.type, this);\r\n this._value.model = value;\r\n\r\n if (value.comment) {\r\n switch (value.comment.type) {\r\n case 'note':\r\n this._comment = Note.fromModel(value.comment);\r\n break;\r\n }\r\n }\r\n\r\n if (value.style) {\r\n this.style = value.style;\r\n } else {\r\n this.style = {};\r\n }\r\n }\r\n}\r\nCell.Types = Enums.ValueType;\r\n\r\n// =============================================================================\r\n// Internal Value Types\r\n\r\nclass NullValue {\r\n constructor(cell) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Null,\r\n };\r\n }\r\n\r\n get value() {\r\n return null;\r\n }\r\n\r\n set value(value) {\r\n // nothing to do\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Null;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Null;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return '';\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return '';\r\n }\r\n}\r\n\r\nclass NumberValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Number,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Number;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Number;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass StringValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return `\"${this.model.value.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value;\r\n }\r\n}\r\n\r\nclass RichTextValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n toString() {\r\n return this.model.value.richText.map(t => t.text).join('');\r\n }\r\n\r\n get type() {\r\n return Cell.Types.RichText;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.RichText;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return `\"${this.text.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n\r\n release() {}\r\n}\r\n\r\nclass DateValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Date,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Date;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Date;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toISOString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass HyperlinkValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Hyperlink,\r\n text: value ? value.text : undefined,\r\n hyperlink: value ? value.hyperlink : undefined,\r\n };\r\n if (value && value.tooltip) {\r\n this.model.tooltip = value.tooltip;\r\n }\r\n }\r\n\r\n get value() {\r\n const v = {\r\n text: this.model.text,\r\n hyperlink: this.model.hyperlink,\r\n };\r\n if (this.model.tooltip) {\r\n v.tooltip = this.model.tooltip;\r\n }\r\n return v;\r\n }\r\n\r\n set value(value) {\r\n this.model = {\r\n text: value.text,\r\n hyperlink: value.hyperlink,\r\n };\r\n if (value.tooltip) {\r\n this.model.tooltip = value.tooltip;\r\n }\r\n }\r\n\r\n get text() {\r\n return this.model.text;\r\n }\r\n\r\n set text(value) {\r\n this.model.text = value;\r\n }\r\n\r\n /*\r\n get tooltip() {\r\n return this.model.tooltip;\r\n }\r\n\r\n set tooltip(value) {\r\n this.model.tooltip = value;\r\n } */\r\n\r\n get hyperlink() {\r\n return this.model.hyperlink;\r\n }\r\n\r\n set hyperlink(value) {\r\n this.model.hyperlink = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Hyperlink;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Hyperlink;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.hyperlink;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.text;\r\n }\r\n}\r\n\r\nclass MergeValue {\r\n constructor(cell, master) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Merge,\r\n master: master ? master.address : undefined,\r\n };\r\n this._master = master;\r\n if (master) {\r\n master.addMergeRef();\r\n }\r\n }\r\n\r\n get value() {\r\n return this._master.value;\r\n }\r\n\r\n set value(value) {\r\n if (value instanceof Cell) {\r\n if (this._master) {\r\n this._master.releaseMergeRef();\r\n }\r\n value.addMergeRef();\r\n this._master = value;\r\n } else {\r\n this._master.value = value;\r\n }\r\n }\r\n\r\n isMergedTo(master) {\r\n return master === this._master;\r\n }\r\n\r\n get master() {\r\n return this._master;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Merge;\r\n }\r\n\r\n get effectiveType() {\r\n return this._master.effectiveType;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return '';\r\n }\r\n\r\n release() {\r\n this._master.releaseMergeRef();\r\n }\r\n\r\n toString() {\r\n return this.value.toString();\r\n }\r\n}\r\n\r\nclass FormulaValue {\r\n constructor(cell, value) {\r\n this.cell = cell;\r\n\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Formula,\r\n shareType: value ? value.shareType : undefined,\r\n ref: value ? value.ref : undefined,\r\n formula: value ? value.formula : undefined,\r\n sharedFormula: value ? value.sharedFormula : undefined,\r\n result: value ? value.result : undefined,\r\n };\r\n }\r\n\r\n _copyModel(model) {\r\n const copy = {};\r\n const cp = name => {\r\n const value = model[name];\r\n if (value) {\r\n copy[name] = value;\r\n }\r\n };\r\n cp('formula');\r\n cp('result');\r\n cp('ref');\r\n cp('shareType');\r\n cp('sharedFormula');\r\n return copy;\r\n }\r\n\r\n get value() {\r\n return this._copyModel(this.model);\r\n }\r\n\r\n set value(value) {\r\n this.model = this._copyModel(value);\r\n }\r\n\r\n validate(value) {\r\n switch (Value.getType(value)) {\r\n case Cell.Types.Null:\r\n case Cell.Types.String:\r\n case Cell.Types.Number:\r\n case Cell.Types.Date:\r\n break;\r\n case Cell.Types.Hyperlink:\r\n case Cell.Types.Formula:\r\n default:\r\n throw new Error('Cannot process that type of result value');\r\n }\r\n }\r\n\r\n get dependencies() {\r\n // find all the ranges and cells mentioned in the formula\r\n const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g);\r\n const cells = this.formula\r\n .replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g, '')\r\n .match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g);\r\n return {\r\n ranges,\r\n cells,\r\n };\r\n }\r\n\r\n get formula() {\r\n return this.model.formula || this._getTranslatedFormula();\r\n }\r\n\r\n set formula(value) {\r\n this.model.formula = value;\r\n }\r\n\r\n get formulaType() {\r\n if (this.model.formula) {\r\n return Enums.FormulaType.Master;\r\n }\r\n if (this.model.sharedFormula) {\r\n return Enums.FormulaType.Shared;\r\n }\r\n return Enums.FormulaType.None;\r\n }\r\n\r\n get result() {\r\n return this.model.result;\r\n }\r\n\r\n set result(value) {\r\n this.model.result = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Formula;\r\n }\r\n\r\n get effectiveType() {\r\n const v = this.model.result;\r\n if (v === null || v === undefined) {\r\n return Enums.ValueType.Null;\r\n }\r\n if (v instanceof String || typeof v === 'string') {\r\n return Enums.ValueType.String;\r\n }\r\n if (typeof v === 'number') {\r\n return Enums.ValueType.Number;\r\n }\r\n if (v instanceof Date) {\r\n return Enums.ValueType.Date;\r\n }\r\n if (v.text && v.hyperlink) {\r\n return Enums.ValueType.Hyperlink;\r\n }\r\n if (v.formula) {\r\n return Enums.ValueType.Formula;\r\n }\r\n\r\n return Enums.ValueType.Null;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n _getTranslatedFormula() {\r\n if (!this._translatedFormula && this.model.sharedFormula) {\r\n const {worksheet} = this.cell;\r\n const master = worksheet.findCell(this.model.sharedFormula);\r\n this._translatedFormula =\r\n master && slideFormula(master.formula, master.address, this.model.address);\r\n }\r\n return this._translatedFormula;\r\n }\r\n\r\n toCsvString() {\r\n return `${this.model.result || ''}`;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.result ? this.model.result.toString() : '';\r\n }\r\n}\r\n\r\nclass SharedStringValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.SharedString,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.SharedString;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.SharedString;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass BooleanValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Boolean,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Boolean;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Boolean;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value ? 1 : 0;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass ErrorValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Error,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Error;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Error;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.error.toString();\r\n }\r\n}\r\n\r\nclass JSONValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value: JSON.stringify(value),\r\n rawValue: value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.rawValue;\r\n }\r\n\r\n set value(value) {\r\n this.model.rawValue = value;\r\n this.model.value = JSON.stringify(value);\r\n }\r\n\r\n get type() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value;\r\n }\r\n}\r\n\r\n// Value is a place to hold common static Value type functions\r\nconst Value = {\r\n getType(value) {\r\n if (value === null || value === undefined) {\r\n return Cell.Types.Null;\r\n }\r\n if (value instanceof String || typeof value === 'string') {\r\n return Cell.Types.String;\r\n }\r\n if (typeof value === 'number') {\r\n return Cell.Types.Number;\r\n }\r\n if (typeof value === 'boolean') {\r\n return Cell.Types.Boolean;\r\n }\r\n if (value instanceof Date) {\r\n return Cell.Types.Date;\r\n }\r\n if (value.text && value.hyperlink) {\r\n return Cell.Types.Hyperlink;\r\n }\r\n if (value.formula || value.sharedFormula) {\r\n return Cell.Types.Formula;\r\n }\r\n if (value.richText) {\r\n return Cell.Types.RichText;\r\n }\r\n if (value.sharedString) {\r\n return Cell.Types.SharedString;\r\n }\r\n if (value.error) {\r\n return Cell.Types.Error;\r\n }\r\n return Cell.Types.JSON;\r\n },\r\n\r\n // map valueType to constructor\r\n types: [\r\n {t: Cell.Types.Null, f: NullValue},\r\n {t: Cell.Types.Number, f: NumberValue},\r\n {t: Cell.Types.String, f: StringValue},\r\n {t: Cell.Types.Date, f: DateValue},\r\n {t: Cell.Types.Hyperlink, f: HyperlinkValue},\r\n {t: Cell.Types.Formula, f: FormulaValue},\r\n {t: Cell.Types.Merge, f: MergeValue},\r\n {t: Cell.Types.JSON, f: JSONValue},\r\n {t: Cell.Types.SharedString, f: SharedStringValue},\r\n {t: Cell.Types.RichText, f: RichTextValue},\r\n {t: Cell.Types.Boolean, f: BooleanValue},\r\n {t: Cell.Types.Error, f: ErrorValue},\r\n ].reduce((p, t) => {\r\n p[t.t] = t.f;\r\n return p;\r\n }, []),\r\n\r\n create(type, cell, value) {\r\n const T = this.types[type];\r\n if (!T) {\r\n throw new Error(`Could not create Value of type ${type}`);\r\n }\r\n return new T(cell, value);\r\n },\r\n};\r\n\r\nmodule.exports = Cell;\r\n"],"mappings":";;AAAA;AACA,MAAMA,QAAQ,GAAGC,OAAO,CAAC,oBAAoB,CAAC;AAC9C,MAAMC,CAAC,GAAGD,OAAO,CAAC,qBAAqB,CAAC;AACxC,MAAME,KAAK,GAAGF,OAAO,CAAC,SAAS,CAAC;AAChC,MAAM;EAACG;AAAY,CAAC,GAAGH,OAAO,CAAC,yBAAyB,CAAC;AACzD,MAAMI,IAAI,GAAGJ,OAAO,CAAC,QAAQ,CAAC;AAC9B;AACA;AACA;AACA;;AAEA,MAAMK,IAAI,CAAC;EACTC,WAAWA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,EAAE;IAChC,IAAI,CAACF,GAAG,IAAI,CAACC,MAAM,EAAE;MACnB,MAAM,IAAIE,KAAK,CAAC,oBAAoB,CAAC;IACvC;IAEA,IAAI,CAACC,IAAI,GAAGJ,GAAG;IACf,IAAI,CAACK,OAAO,GAAGJ,MAAM;IAErBT,QAAQ,CAACc,eAAe,CAACJ,OAAO,CAAC;IACjC,IAAI,CAACK,QAAQ,GAAGL,OAAO;;IAEvB;IACA,IAAI,CAACM,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACC,IAAI,EAAE,IAAI,CAAC;IAEjD,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,WAAW,CAACd,GAAG,CAACa,KAAK,EAAEZ,MAAM,CAACY,KAAK,EAAE,CAAC,CAAC,CAAC;IAE1D,IAAI,CAACE,WAAW,GAAG,CAAC;EACtB;EAEA,IAAIC,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACZ,IAAI,CAACY,SAAS;EAC5B;EAEA,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACb,IAAI,CAACY,SAAS,CAACC,QAAQ;EACrC;;EAEA;EACAC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACL,KAAK;IACjB,OAAO,IAAI,CAACL,MAAM;IAClB,OAAO,IAAI,CAACJ,IAAI;IAChB,OAAO,IAAI,CAACC,OAAO;IACnB,OAAO,IAAI,CAACE,QAAQ;EACtB;;EAEA;EACA;EACA,IAAIY,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACN,KAAK,CAACM,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAACC,KAAK,EAAE;IAChB,IAAI,CAACP,KAAK,CAACM,MAAM,GAAGC,KAAK;EAC3B;EAEA,IAAIC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACR,KAAK,CAACQ,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAACD,KAAK,EAAE;IACd,IAAI,CAACP,KAAK,CAACQ,IAAI,GAAGD,KAAK;EACzB;EAEA,IAAIE,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACT,KAAK,CAACS,SAAS;EAC7B;EAEA,IAAIA,SAASA,CAACF,KAAK,EAAE;IACnB,IAAI,CAACP,KAAK,CAACS,SAAS,GAAGF,KAAK;EAC9B;EAEA,IAAIG,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACV,KAAK,CAACU,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAACH,KAAK,EAAE;IAChB,IAAI,CAACP,KAAK,CAACU,MAAM,GAAGH,KAAK;EAC3B;EAEA,IAAII,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACX,KAAK,CAACW,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAACJ,KAAK,EAAE;IACd,IAAI,CAACP,KAAK,CAACW,IAAI,GAAGJ,KAAK;EACzB;EAEA,IAAIK,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACZ,KAAK,CAACY,UAAU;EAC9B;EAEA,IAAIA,UAAUA,CAACL,KAAK,EAAE;IACpB,IAAI,CAACP,KAAK,CAACY,UAAU,GAAGL,KAAK;EAC/B;EAEAN,WAAWA,CAACY,QAAQ,EAAEC,QAAQ,EAAEd,KAAK,EAAE;IACrC,MAAMM,MAAM,GAAIO,QAAQ,IAAIA,QAAQ,CAACP,MAAM,IAAMQ,QAAQ,IAAIA,QAAQ,CAACR,MAAO;IAC7E,IAAIA,MAAM,EAAEN,KAAK,CAACM,MAAM,GAAGA,MAAM;IAEjC,MAAME,IAAI,GAAIK,QAAQ,IAAIA,QAAQ,CAACL,IAAI,IAAMM,QAAQ,IAAIA,QAAQ,CAACN,IAAK;IACvE,IAAIA,IAAI,EAAER,KAAK,CAACQ,IAAI,GAAGA,IAAI;IAE3B,MAAMC,SAAS,GAAII,QAAQ,IAAIA,QAAQ,CAACJ,SAAS,IAAMK,QAAQ,IAAIA,QAAQ,CAACL,SAAU;IACtF,IAAIA,SAAS,EAAET,KAAK,CAACS,SAAS,GAAGA,SAAS;IAE1C,MAAMC,MAAM,GAAIG,QAAQ,IAAIA,QAAQ,CAACH,MAAM,IAAMI,QAAQ,IAAIA,QAAQ,CAACJ,MAAO;IAC7E,IAAIA,MAAM,EAAEV,KAAK,CAACU,MAAM,GAAGA,MAAM;IAEjC,MAAMC,IAAI,GAAIE,QAAQ,IAAIA,QAAQ,CAACF,IAAI,IAAMG,QAAQ,IAAIA,QAAQ,CAACH,IAAK;IACvE,IAAIA,IAAI,EAAEX,KAAK,CAACW,IAAI,GAAGA,IAAI;IAE3B,MAAMC,UAAU,GAAIC,QAAQ,IAAIA,QAAQ,CAACD,UAAU,IAAME,QAAQ,IAAIA,QAAQ,CAACF,UAAW;IACzF,IAAIA,UAAU,EAAEZ,KAAK,CAACY,UAAU,GAAGA,UAAU;IAE7C,OAAOZ,KAAK;EACd;;EAEA;EACA;EACA,IAAIX,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACK,QAAQ;EACtB;EAEA,IAAIP,GAAGA,CAAA,EAAG;IACR,OAAO,IAAI,CAACI,IAAI,CAACwB,MAAM;EACzB;EAEA,IAAIC,GAAGA,CAAA,EAAG;IACR,OAAO,IAAI,CAACxB,OAAO,CAACuB,MAAM;EAC5B;EAEA,IAAIE,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,IAAI,CAACzB,OAAO,CAAC0B,MAAM,IAAI,IAAI,CAAC/B,GAAG,EAAE;EAC9C;;EAEA;EACA;;EAEA,IAAIgC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACxB,MAAM,CAACwB,IAAI;EACzB;EAEA,IAAIC,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACzB,MAAM,CAACyB,aAAa;EAClC;EAEAC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC1B,MAAM,CAAC0B,WAAW,CAAC,CAAC;EAClC;;EAEA;EACA;;EAEAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACpB,WAAW,EAAE;EACpB;EAEAqB,eAAeA,CAAA,EAAG;IAChB,IAAI,CAACrB,WAAW,EAAE;EACpB;EAEA,IAAIsB,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACtB,WAAW,GAAG,CAAC,IAAI,IAAI,CAACiB,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC2B,KAAK;EAC/D;EAEAC,KAAKA,CAACC,MAAM,EAAEC,WAAW,EAAE;IACzB,IAAI,CAACjC,MAAM,CAACkC,OAAO,CAAC,CAAC;IACrB,IAAI,CAAClC,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAAC2B,KAAK,EAAE,IAAI,EAAEE,MAAM,CAAC;IAC1D,IAAI,CAACC,WAAW,EAAE;MAChB,IAAI,CAAC5B,KAAK,GAAG2B,MAAM,CAAC3B,KAAK;IAC3B;EACF;EAEA8B,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAACX,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC2B,KAAK,EAAE;MAClC,IAAI,CAAC9B,MAAM,CAACkC,OAAO,CAAC,CAAC;MACrB,IAAI,CAAClC,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACC,IAAI,EAAE,IAAI,CAAC;MACjD,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,WAAW,CAAC,IAAI,CAACV,IAAI,CAACS,KAAK,EAAE,IAAI,CAACR,OAAO,CAACQ,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE;EACF;EAEA+B,UAAUA,CAACJ,MAAM,EAAE;IACjB,IAAI,IAAI,CAAChC,MAAM,CAACwB,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC2B,KAAK,EAAE,OAAO,KAAK;IACvD,OAAO,IAAI,CAAC9B,MAAM,CAACoC,UAAU,CAACJ,MAAM,CAAC;EACvC;EAEA,IAAIA,MAAMA,CAAA,EAAG;IACX,IAAI,IAAI,CAACR,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC2B,KAAK,EAAE;MAClC,OAAO,IAAI,CAAC9B,MAAM,CAACgC,MAAM;IAC3B;IACA,OAAO,IAAI,CAAC,CAAC;EACf;EAEA,IAAIK,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACrC,MAAM,CAACwB,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAACmC,SAAS;EAClD;EAEA,IAAIC,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACvC,MAAM,CAACuC,SAAS;EAC9B;;EAEA;EACA,IAAI3B,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACZ,MAAM,CAACY,KAAK;EAC1B;;EAEA;EACA,IAAIA,KAAKA,CAAC4B,CAAC,EAAE;IACX;IACA,IAAI,IAAI,CAAChB,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC2B,KAAK,EAAE;MAClC,IAAI,CAAC9B,MAAM,CAACgC,MAAM,CAACpB,KAAK,GAAG4B,CAAC;MAC5B;IACF;IAEA,IAAI,CAACxC,MAAM,CAACkC,OAAO,CAAC,CAAC;;IAErB;IACA,IAAI,CAAClC,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACD,KAAK,CAACwC,OAAO,CAACD,CAAC,CAAC,EAAE,IAAI,EAAEA,CAAC,CAAC;EACvD;EAEA,IAAIE,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACC,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACD,IAAI;EAC5C;EAEA,IAAIA,IAAIA,CAACA,IAAI,EAAE;IACb,IAAI,CAACC,QAAQ,GAAG,IAAItD,IAAI,CAACqD,IAAI,CAAC;EAChC;EAEA,IAAIE,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAAC5C,MAAM,CAAC6C,QAAQ,CAAC,CAAC;EAC/B;EAEA,IAAIC,IAAIA,CAAA,EAAG;IACT,OAAO5D,CAAC,CAAC6D,UAAU,CAAC,IAAI,CAACH,IAAI,CAAC;EAChC;EAEAC,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACD,IAAI;EAClB;EAEAI,mBAAmBA,CAACT,SAAS,EAAE;IAC7B;IACA,IAAI,IAAI,CAACf,IAAI,KAAKlC,IAAI,CAACa,KAAK,CAAC8C,MAAM,EAAE;MACnC,IAAI,CAACjD,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACmC,SAAS,EAAE,IAAI,EAAE;QACrDM,IAAI,EAAE,IAAI,CAAC5C,MAAM,CAACY,KAAK;QACvB2B;MACF,CAAC,CAAC;IACJ;EACF;;EAEA;EACA;EACA,IAAIW,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAClD,MAAM,CAACkD,OAAO;EAC5B;EAEA,IAAIC,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACnD,MAAM,CAACmD,MAAM;EAC3B;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACpD,MAAM,CAACoD,WAAW;EAChC;;EAEA;EACA;EACA,IAAIC,WAAWA,CAAA,EAAG;IAChB,MAAM;MAAC7C;IAAS,CAAC,GAAG,IAAI,CAACZ,IAAI;IAC7B,OAAO;MACL0D,SAAS,EAAE9C,SAAS,CAAC+C,IAAI;MACzB7D,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBF,GAAG,EAAE,IAAI,CAACA,GAAG;MACb6B,GAAG,EAAE,IAAI,CAACA;IACZ,CAAC;EACH;EAEA,IAAIkC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC;EACtB;EAEA,IAAID,IAAIA,CAAC3C,KAAK,EAAE;IACd,IAAI,CAAC4C,KAAK,GAAG,CAAC5C,KAAK,CAAC;EACtB;EAEA,IAAI4C,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC/C,QAAQ,CAACgD,YAAY,CAACC,UAAU,CAAC,IAAI,CAACL,WAAW,CAAC;EAChE;EAEA,IAAIG,KAAKA,CAAC5C,KAAK,EAAE;IACf,MAAM;MAAC6C;IAAY,CAAC,GAAG,IAAI,CAAChD,QAAQ;IACpCgD,YAAY,CAACE,cAAc,CAAC,IAAI,CAACN,WAAW,CAAC;IAC7CzC,KAAK,CAACgD,OAAO,CAACL,IAAI,IAAI;MACpBE,YAAY,CAACI,KAAK,CAAC,IAAI,CAACR,WAAW,EAAEE,IAAI,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEAO,OAAOA,CAACP,IAAI,EAAE;IACZ,IAAI,CAAC9C,QAAQ,CAACgD,YAAY,CAACI,KAAK,CAAC,IAAI,CAACR,WAAW,EAAEE,IAAI,CAAC;EAC1D;EAEAQ,UAAUA,CAACR,IAAI,EAAE;IACf,IAAI,CAAC9C,QAAQ,CAACgD,YAAY,CAACO,QAAQ,CAAC,IAAI,CAACX,WAAW,EAAEE,IAAI,CAAC;EAC7D;EAEAI,cAAcA,CAAA,EAAG;IACf,IAAI,CAAClD,QAAQ,CAACgD,YAAY,CAACE,cAAc,CAAC,IAAI,CAACN,WAAW,CAAC;EAC7D;;EAEA;EACA;EACA,IAAIY,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACzD,SAAS,CAAC0D,eAAe;EACvC;EAEA,IAAIC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACF,gBAAgB,CAACG,IAAI,CAAC,IAAI,CAAC1E,OAAO,CAAC;EACjD;EAEA,IAAIyE,cAAcA,CAACvD,KAAK,EAAE;IACxB,IAAI,CAACqD,gBAAgB,CAACI,GAAG,CAAC,IAAI,CAAC3E,OAAO,EAAEkB,KAAK,CAAC;EAChD;;EAEA;EACA;;EAEA,IAAI0D,KAAKA,CAAA,EAAG;IACV,MAAM;MAACA;IAAK,CAAC,GAAG,IAAI,CAACtE,MAAM;IAC3BsE,KAAK,CAACjE,KAAK,GAAG,IAAI,CAACA,KAAK;IACxB,IAAI,IAAI,CAACsC,QAAQ,EAAE;MACjB2B,KAAK,CAACC,OAAO,GAAG,IAAI,CAAC5B,QAAQ,CAAC2B,KAAK;IACrC;IACA,OAAOA,KAAK;EACd;EAEA,IAAIA,KAAKA,CAAC1D,KAAK,EAAE;IACf,IAAI,CAACZ,MAAM,CAACkC,OAAO,CAAC,CAAC;IACrB,IAAI,CAAClC,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACU,KAAK,CAACY,IAAI,EAAE,IAAI,CAAC;IAC5C,IAAI,CAACxB,MAAM,CAACsE,KAAK,GAAG1D,KAAK;IAEzB,IAAIA,KAAK,CAAC2D,OAAO,EAAE;MACjB,QAAQ3D,KAAK,CAAC2D,OAAO,CAAC/C,IAAI;QACxB,KAAK,MAAM;UACT,IAAI,CAACmB,QAAQ,GAAGtD,IAAI,CAACmF,SAAS,CAAC5D,KAAK,CAAC2D,OAAO,CAAC;UAC7C;MACJ;IACF;IAEA,IAAI3D,KAAK,CAACP,KAAK,EAAE;MACf,IAAI,CAACA,KAAK,GAAGO,KAAK,CAACP,KAAK;IAC1B,CAAC,MAAM;MACL,IAAI,CAACA,KAAK,GAAG,CAAC,CAAC;IACjB;EACF;AACF;AACAf,IAAI,CAACa,KAAK,GAAGhB,KAAK,CAACsF,SAAS;;AAE5B;AACA;;AAEA,MAAMC,SAAS,CAAC;EACdnF,WAAWA,CAACoF,IAAI,EAAE;IAChB,IAAI,CAACL,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACC;IACnB,CAAC;EACH;EAEA,IAAIQ,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI;EACb;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf;EAAA;EAGF,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACC,IAAI;EACxB;EAEA,IAAIqB,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACC,IAAI;EACxB;EAEA,IAAIV,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,EAAE;EACX;EAEAQ,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,EAAE;EACX;AACF;AAEA,MAAM+B,WAAW,CAAC;EAChBrF,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC0E,MAAM;MACvBjE;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAAC0E,MAAM;EAC1B;EAEA,IAAIpD,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAAC0E,MAAM;EAC1B;EAEA,IAAInF,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMiC,WAAW,CAAC;EAChBvF,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC8C,MAAM;MACvBrC;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAAC8C,MAAM;EAC1B;EAEA,IAAIxB,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAAC8C,MAAM;EAC1B;EAEA,IAAIvD,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,IAAI,CAAC4C,KAAK,CAAC1D,KAAK,CAACmE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;EACpD;EAEA7C,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK;EACzB;AACF;AAEA,MAAMoE,aAAa,CAAC;EAClBzF,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC8C,MAAM;MACvBrC;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEAiC,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAACqE,QAAQ,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACvC,IAAI,CAAC,CAACwC,IAAI,CAAC,EAAE,CAAC;EAC5D;EAEA,IAAI5D,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACkF,QAAQ;EAC5B;EAEA,IAAI5D,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACkF,QAAQ;EAC5B;EAEA,IAAI3F,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,IAAI,CAACkB,IAAI,CAACmC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;EAC7C;EAEA7C,OAAOA,CAAA,EAAG,CAAC;AACb;AAEA,MAAMoD,SAAS,CAAC;EACd/F,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACoF,IAAI;MACrB3E;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACoF,IAAI;EACxB;EAEA,IAAI9D,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACoF,IAAI;EACxB;EAEA,IAAI7F,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC1D,KAAK,CAAC4E,WAAW,CAAC,CAAC;EACvC;EAEAtD,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAM4C,cAAc,CAAC;EACnBlG,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACmC,SAAS;MAC1BM,IAAI,EAAEhC,KAAK,GAAGA,KAAK,CAACgC,IAAI,GAAG8C,SAAS;MACpCnD,SAAS,EAAE3B,KAAK,GAAGA,KAAK,CAAC2B,SAAS,GAAGmD;IACvC,CAAC;IACD,IAAI9E,KAAK,IAAIA,KAAK,CAAC+E,OAAO,EAAE;MAC1B,IAAI,CAACrB,KAAK,CAACqB,OAAO,GAAG/E,KAAK,CAAC+E,OAAO;IACpC;EACF;EAEA,IAAI/E,KAAKA,CAAA,EAAG;IACV,MAAM4B,CAAC,GAAG;MACRI,IAAI,EAAE,IAAI,CAAC0B,KAAK,CAAC1B,IAAI;MACrBL,SAAS,EAAE,IAAI,CAAC+B,KAAK,CAAC/B;IACxB,CAAC;IACD,IAAI,IAAI,CAAC+B,KAAK,CAACqB,OAAO,EAAE;MACtBnD,CAAC,CAACmD,OAAO,GAAG,IAAI,CAACrB,KAAK,CAACqB,OAAO;IAChC;IACA,OAAOnD,CAAC;EACV;EAEA,IAAI5B,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,GAAG;MACX1B,IAAI,EAAEhC,KAAK,CAACgC,IAAI;MAChBL,SAAS,EAAE3B,KAAK,CAAC2B;IACnB,CAAC;IACD,IAAI3B,KAAK,CAAC+E,OAAO,EAAE;MACjB,IAAI,CAACrB,KAAK,CAACqB,OAAO,GAAG/E,KAAK,CAAC+E,OAAO;IACpC;EACF;EAEA,IAAI/C,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAAC0B,KAAK,CAAC1B,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAAChC,KAAK,EAAE;IACd,IAAI,CAAC0D,KAAK,CAAC1B,IAAI,GAAGhC,KAAK;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;;EAGE,IAAI2B,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC+B,KAAK,CAAC/B,SAAS;EAC7B;EAEA,IAAIA,SAASA,CAAC3B,KAAK,EAAE;IACnB,IAAI,CAAC0D,KAAK,CAAC/B,SAAS,GAAG3B,KAAK;EAC9B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACmC,SAAS;EAC7B;EAEA,IAAIb,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACmC,SAAS;EAC7B;EAEA,IAAI5C,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC/B,SAAS;EAC7B;EAEAL,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1B,IAAI;EACxB;AACF;AAEA,MAAMgD,UAAU,CAAC;EACfrG,WAAWA,CAACoF,IAAI,EAAE3C,MAAM,EAAE;IACxB,IAAI,CAACsC,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC2B,KAAK;MACtBE,MAAM,EAAEA,MAAM,GAAGA,MAAM,CAACtC,OAAO,GAAGgG;IACpC,CAAC;IACD,IAAI,CAACG,OAAO,GAAG7D,MAAM;IACrB,IAAIA,MAAM,EAAE;MACVA,MAAM,CAACL,WAAW,CAAC,CAAC;IACtB;EACF;EAEA,IAAIf,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACiF,OAAO,CAACjF,KAAK;EAC3B;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAIA,KAAK,YAAYtB,IAAI,EAAE;MACzB,IAAI,IAAI,CAACuG,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAACjE,eAAe,CAAC,CAAC;MAChC;MACAhB,KAAK,CAACe,WAAW,CAAC,CAAC;MACnB,IAAI,CAACkE,OAAO,GAAGjF,KAAK;IACtB,CAAC,MAAM;MACL,IAAI,CAACiF,OAAO,CAACjF,KAAK,GAAGA,KAAK;IAC5B;EACF;EAEAwB,UAAUA,CAACJ,MAAM,EAAE;IACjB,OAAOA,MAAM,KAAK,IAAI,CAAC6D,OAAO;EAChC;EAEA,IAAI7D,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAAC6D,OAAO;EACrB;EAEA,IAAIrE,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAAC2B,KAAK;EACzB;EAEA,IAAIL,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACoE,OAAO,CAACpE,aAAa;EACnC;EAEA,IAAI/B,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,EAAE;EACX;EAEAQ,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC2D,OAAO,CAACjE,eAAe,CAAC,CAAC;EAChC;EAEAiB,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACjC,KAAK,CAACiC,QAAQ,CAAC,CAAC;EAC9B;AACF;AAEA,MAAMiD,YAAY,CAAC;EACjBvG,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC+D,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACL,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC4F,OAAO;MACxBC,SAAS,EAAEpF,KAAK,GAAGA,KAAK,CAACoF,SAAS,GAAGN,SAAS;MAC9CO,GAAG,EAAErF,KAAK,GAAGA,KAAK,CAACqF,GAAG,GAAGP,SAAS;MAClCxC,OAAO,EAAEtC,KAAK,GAAGA,KAAK,CAACsC,OAAO,GAAGwC,SAAS;MAC1CQ,aAAa,EAAEtF,KAAK,GAAGA,KAAK,CAACsF,aAAa,GAAGR,SAAS;MACtDvC,MAAM,EAAEvC,KAAK,GAAGA,KAAK,CAACuC,MAAM,GAAGuC;IACjC,CAAC;EACH;EAEAS,UAAUA,CAAC7B,KAAK,EAAE;IAChB,MAAM8B,IAAI,GAAG,CAAC,CAAC;IACf,MAAMC,EAAE,GAAG9C,IAAI,IAAI;MACjB,MAAM3C,KAAK,GAAG0D,KAAK,CAACf,IAAI,CAAC;MACzB,IAAI3C,KAAK,EAAE;QACTwF,IAAI,CAAC7C,IAAI,CAAC,GAAG3C,KAAK;MACpB;IACF,CAAC;IACDyF,EAAE,CAAC,SAAS,CAAC;IACbA,EAAE,CAAC,QAAQ,CAAC;IACZA,EAAE,CAAC,KAAK,CAAC;IACTA,EAAE,CAAC,WAAW,CAAC;IACfA,EAAE,CAAC,eAAe,CAAC;IACnB,OAAOD,IAAI;EACb;EAEA,IAAIxF,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACuF,UAAU,CAAC,IAAI,CAAC7B,KAAK,CAAC;EACpC;EAEA,IAAI1D,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,GAAG,IAAI,CAAC6B,UAAU,CAACvF,KAAK,CAAC;EACrC;EAEA0F,QAAQA,CAAC1F,KAAK,EAAE;IACd,QAAQX,KAAK,CAACwC,OAAO,CAAC7B,KAAK,CAAC;MAC1B,KAAKtB,IAAI,CAACa,KAAK,CAACC,IAAI;MACpB,KAAKd,IAAI,CAACa,KAAK,CAAC8C,MAAM;MACtB,KAAK3D,IAAI,CAACa,KAAK,CAAC0E,MAAM;MACtB,KAAKvF,IAAI,CAACa,KAAK,CAACoF,IAAI;QAClB;MACF,KAAKjG,IAAI,CAACa,KAAK,CAACmC,SAAS;MACzB,KAAKhD,IAAI,CAACa,KAAK,CAAC4F,OAAO;MACvB;QACE,MAAM,IAAIpG,KAAK,CAAC,0CAA0C,CAAC;IAC/D;EACF;EAEA,IAAI4G,YAAYA,CAAA,EAAG;IACjB;IACA,MAAMC,MAAM,GAAG,IAAI,CAACtD,OAAO,CAACuD,KAAK,CAAC,sDAAsD,CAAC;IACzF,MAAMC,KAAK,GAAG,IAAI,CAACxD,OAAO,CACvB6B,OAAO,CAAC,sDAAsD,EAAE,EAAE,CAAC,CACnE0B,KAAK,CAAC,oCAAoC,CAAC;IAC9C,OAAO;MACLD,MAAM;MACNE;IACF,CAAC;EACH;EAEA,IAAIxD,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACoB,KAAK,CAACpB,OAAO,IAAI,IAAI,CAACyD,qBAAqB,CAAC,CAAC;EAC3D;EAEA,IAAIzD,OAAOA,CAACtC,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAACpB,OAAO,GAAGtC,KAAK;EAC5B;EAEA,IAAIwC,WAAWA,CAAA,EAAG;IAChB,IAAI,IAAI,CAACkB,KAAK,CAACpB,OAAO,EAAE;MACtB,OAAO/D,KAAK,CAACyH,WAAW,CAACC,MAAM;IACjC;IACA,IAAI,IAAI,CAACvC,KAAK,CAAC4B,aAAa,EAAE;MAC5B,OAAO/G,KAAK,CAACyH,WAAW,CAACE,MAAM;IACjC;IACA,OAAO3H,KAAK,CAACyH,WAAW,CAACG,IAAI;EAC/B;EAEA,IAAI5D,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACmB,KAAK,CAACnB,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAACvC,KAAK,EAAE;IAChB,IAAI,CAAC0D,KAAK,CAACnB,MAAM,GAAGvC,KAAK;EAC3B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAAC4F,OAAO;EAC3B;EAEA,IAAItE,aAAaA,CAAA,EAAG;IAClB,MAAMe,CAAC,GAAG,IAAI,CAAC8B,KAAK,CAACnB,MAAM;IAC3B,IAAIX,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKkD,SAAS,EAAE;MACjC,OAAOvG,KAAK,CAACsF,SAAS,CAACrE,IAAI;IAC7B;IACA,IAAIoC,CAAC,YAAYS,MAAM,IAAI,OAAOT,CAAC,KAAK,QAAQ,EAAE;MAChD,OAAOrD,KAAK,CAACsF,SAAS,CAACxB,MAAM;IAC/B;IACA,IAAI,OAAOT,CAAC,KAAK,QAAQ,EAAE;MACzB,OAAOrD,KAAK,CAACsF,SAAS,CAACI,MAAM;IAC/B;IACA,IAAIrC,CAAC,YAAY+C,IAAI,EAAE;MACrB,OAAOpG,KAAK,CAACsF,SAAS,CAACc,IAAI;IAC7B;IACA,IAAI/C,CAAC,CAACI,IAAI,IAAIJ,CAAC,CAACD,SAAS,EAAE;MACzB,OAAOpD,KAAK,CAACsF,SAAS,CAACnC,SAAS;IAClC;IACA,IAAIE,CAAC,CAACU,OAAO,EAAE;MACb,OAAO/D,KAAK,CAACsF,SAAS,CAACsB,OAAO;IAChC;IAEA,OAAO5G,KAAK,CAACsF,SAAS,CAACrE,IAAI;EAC7B;EAEA,IAAIV,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEA+F,qBAAqBA,CAAA,EAAG;IACtB,IAAI,CAAC,IAAI,CAACK,kBAAkB,IAAI,IAAI,CAAC1C,KAAK,CAAC4B,aAAa,EAAE;MACxD,MAAM;QAAC1F;MAAS,CAAC,GAAG,IAAI,CAACmE,IAAI;MAC7B,MAAM3C,MAAM,GAAGxB,SAAS,CAACyG,QAAQ,CAAC,IAAI,CAAC3C,KAAK,CAAC4B,aAAa,CAAC;MAC3D,IAAI,CAACc,kBAAkB,GACrBhF,MAAM,IAAI5C,YAAY,CAAC4C,MAAM,CAACkB,OAAO,EAAElB,MAAM,CAACtC,OAAO,EAAE,IAAI,CAAC4E,KAAK,CAAC5E,OAAO,CAAC;IAC9E;IACA,OAAO,IAAI,CAACsH,kBAAkB;EAChC;EAEAtF,WAAWA,CAAA,EAAG;IACZ,OAAO,GAAG,IAAI,CAAC4C,KAAK,CAACnB,MAAM,IAAI,EAAE,EAAE;EACrC;EAEAjB,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAACnB,MAAM,GAAG,IAAI,CAACmB,KAAK,CAACnB,MAAM,CAACN,QAAQ,CAAC,CAAC,GAAG,EAAE;EAC9D;AACF;AAEA,MAAMqE,iBAAiB,CAAC;EACtB3H,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACgH,YAAY;MAC7BvG;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACgH,YAAY;EAChC;EAEA,IAAI1F,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACgH,YAAY;EAChC;EAEA,IAAIzH,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMuE,YAAY,CAAC;EACjB7H,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACkH,OAAO;MACxBzG;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACkH,OAAO;EAC3B;EAEA,IAAI5F,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACkH,OAAO;EAC3B;EAEA,IAAI3H,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC1D,KAAK,GAAG,CAAC,GAAG,CAAC;EACjC;EAEAsB,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAACiC,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMyE,UAAU,CAAC;EACf/H,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAACR,KAAK;MACtBiB;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAAC1D,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAACR,KAAK;EACzB;EAEA,IAAI8B,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAACR,KAAK;EACzB;EAEA,IAAID,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACmB,QAAQ,CAAC,CAAC;EACxB;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK,CAAC2G,KAAK,CAAC1E,QAAQ,CAAC,CAAC;EAC1C;AACF;AAEA,MAAM2E,SAAS,CAAC;EACdjI,WAAWA,CAACoF,IAAI,EAAE/D,KAAK,EAAE;IACvB,IAAI,CAAC0D,KAAK,GAAG;MACX5E,OAAO,EAAEiF,IAAI,CAACjF,OAAO;MACrB8B,IAAI,EAAElC,IAAI,CAACa,KAAK,CAAC8C,MAAM;MACvBrC,KAAK,EAAE6G,IAAI,CAACC,SAAS,CAAC9G,KAAK,CAAC;MAC5B+G,QAAQ,EAAE/G;IACZ,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC0D,KAAK,CAACqD,QAAQ;EAC5B;EAEA,IAAI/G,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC0D,KAAK,CAACqD,QAAQ,GAAG/G,KAAK;IAC3B,IAAI,CAAC0D,KAAK,CAAC1D,KAAK,GAAG6G,IAAI,CAACC,SAAS,CAAC9G,KAAK,CAAC;EAC1C;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOlC,IAAI,CAACa,KAAK,CAAC8C,MAAM;EAC1B;EAEA,IAAIxB,aAAaA,CAAA,EAAG;IAClB,OAAOnC,IAAI,CAACa,KAAK,CAAC8C,MAAM;EAC1B;EAEA,IAAIvD,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACkB,KAAK,EAAE;IACjB,IAAI,CAAC0D,KAAK,CAAC5E,OAAO,GAAGkB,KAAK;EAC5B;EAEAc,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC4C,KAAK,CAAC1D,KAAK;EACzB;EAEAsB,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACyB,KAAK,CAAC1D,KAAK;EACzB;AACF;;AAEA;AACA,MAAMX,KAAK,GAAG;EACZwC,OAAOA,CAAC7B,KAAK,EAAE;IACb,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK8E,SAAS,EAAE;MACzC,OAAOpG,IAAI,CAACa,KAAK,CAACC,IAAI;IACxB;IACA,IAAIQ,KAAK,YAAYqC,MAAM,IAAI,OAAOrC,KAAK,KAAK,QAAQ,EAAE;MACxD,OAAOtB,IAAI,CAACa,KAAK,CAAC8C,MAAM;IAC1B;IACA,IAAI,OAAOrC,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAOtB,IAAI,CAACa,KAAK,CAAC0E,MAAM;IAC1B;IACA,IAAI,OAAOjE,KAAK,KAAK,SAAS,EAAE;MAC9B,OAAOtB,IAAI,CAACa,KAAK,CAACkH,OAAO;IAC3B;IACA,IAAIzG,KAAK,YAAY2E,IAAI,EAAE;MACzB,OAAOjG,IAAI,CAACa,KAAK,CAACoF,IAAI;IACxB;IACA,IAAI3E,KAAK,CAACgC,IAAI,IAAIhC,KAAK,CAAC2B,SAAS,EAAE;MACjC,OAAOjD,IAAI,CAACa,KAAK,CAACmC,SAAS;IAC7B;IACA,IAAI1B,KAAK,CAACsC,OAAO,IAAItC,KAAK,CAACsF,aAAa,EAAE;MACxC,OAAO5G,IAAI,CAACa,KAAK,CAAC4F,OAAO;IAC3B;IACA,IAAInF,KAAK,CAACqE,QAAQ,EAAE;MAClB,OAAO3F,IAAI,CAACa,KAAK,CAACkF,QAAQ;IAC5B;IACA,IAAIzE,KAAK,CAACgH,YAAY,EAAE;MACtB,OAAOtI,IAAI,CAACa,KAAK,CAACgH,YAAY;IAChC;IACA,IAAIvG,KAAK,CAAC2G,KAAK,EAAE;MACf,OAAOjI,IAAI,CAACa,KAAK,CAACR,KAAK;IACzB;IACA,OAAOL,IAAI,CAACa,KAAK,CAACsH,IAAI;EACxB,CAAC;EAED;EACAI,KAAK,EAAE,CACL;IAAC1C,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACC,IAAI;IAAE0H,CAAC,EAAEpD;EAAS,CAAC,EAClC;IAACS,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAAC0E,MAAM;IAAEiD,CAAC,EAAElD;EAAW,CAAC,EACtC;IAACO,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAAC8C,MAAM;IAAE6E,CAAC,EAAEhD;EAAW,CAAC,EACtC;IAACK,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACoF,IAAI;IAAEuC,CAAC,EAAExC;EAAS,CAAC,EAClC;IAACH,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACmC,SAAS;IAAEwF,CAAC,EAAErC;EAAc,CAAC,EAC5C;IAACN,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAAC4F,OAAO;IAAE+B,CAAC,EAAEhC;EAAY,CAAC,EACxC;IAACX,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAAC2B,KAAK;IAAEgG,CAAC,EAAElC;EAAU,CAAC,EACpC;IAACT,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACsH,IAAI;IAAEK,CAAC,EAAEN;EAAS,CAAC,EAClC;IAACrC,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACgH,YAAY;IAAEW,CAAC,EAAEZ;EAAiB,CAAC,EAClD;IAAC/B,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACkF,QAAQ;IAAEyC,CAAC,EAAE9C;EAAa,CAAC,EAC1C;IAACG,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACkH,OAAO;IAAES,CAAC,EAAEV;EAAY,CAAC,EACxC;IAACjC,CAAC,EAAE7F,IAAI,CAACa,KAAK,CAACR,KAAK;IAAEmI,CAAC,EAAER;EAAU,CAAC,CACrC,CAACS,MAAM,CAAC,CAACC,CAAC,EAAE7C,CAAC,KAAK;IACjB6C,CAAC,CAAC7C,CAAC,CAACA,CAAC,CAAC,GAAGA,CAAC,CAAC2C,CAAC;IACZ,OAAOE,CAAC;EACV,CAAC,EAAE,EAAE,CAAC;EAEN9H,MAAMA,CAACsB,IAAI,EAAEmD,IAAI,EAAE/D,KAAK,EAAE;IACxB,MAAMqH,CAAC,GAAG,IAAI,CAACJ,KAAK,CAACrG,IAAI,CAAC;IAC1B,IAAI,CAACyG,CAAC,EAAE;MACN,MAAM,IAAItI,KAAK,CAAC,kCAAkC6B,IAAI,EAAE,CAAC;IAC3D;IACA,OAAO,IAAIyG,CAAC,CAACtD,IAAI,EAAE/D,KAAK,CAAC;EAC3B;AACF,CAAC;AAEDsH,MAAM,CAACC,OAAO,GAAG7I,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const _ = require('../utils/under-dash');
|
|
4
|
+
const Enums = require('./enums');
|
|
5
|
+
const colCache = require('../utils/col-cache');
|
|
6
|
+
const DEFAULT_COLUMN_WIDTH = 9;
|
|
7
|
+
|
|
8
|
+
// Column defines the column properties for 1 column.
|
|
9
|
+
// This includes header rows, widths, key, (style), etc.
|
|
10
|
+
// Worksheet will condense the columns as appropriate during serialization
|
|
11
|
+
class Column {
|
|
12
|
+
constructor(worksheet, number, defn) {
|
|
13
|
+
this._worksheet = worksheet;
|
|
14
|
+
this._number = number;
|
|
15
|
+
if (defn !== false) {
|
|
16
|
+
// sometimes defn will follow
|
|
17
|
+
this.defn = defn;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
get number() {
|
|
21
|
+
return this._number;
|
|
22
|
+
}
|
|
23
|
+
get worksheet() {
|
|
24
|
+
return this._worksheet;
|
|
25
|
+
}
|
|
26
|
+
get letter() {
|
|
27
|
+
return colCache.n2l(this._number);
|
|
28
|
+
}
|
|
29
|
+
get isCustomWidth() {
|
|
30
|
+
return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;
|
|
31
|
+
}
|
|
32
|
+
get defn() {
|
|
33
|
+
return {
|
|
34
|
+
header: this._header,
|
|
35
|
+
key: this.key,
|
|
36
|
+
width: this.width,
|
|
37
|
+
style: this.style,
|
|
38
|
+
hidden: this.hidden,
|
|
39
|
+
outlineLevel: this.outlineLevel
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
set defn(value) {
|
|
43
|
+
if (value) {
|
|
44
|
+
this.key = value.key;
|
|
45
|
+
this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;
|
|
46
|
+
this.outlineLevel = value.outlineLevel;
|
|
47
|
+
if (value.style) {
|
|
48
|
+
this.style = value.style;
|
|
49
|
+
} else {
|
|
50
|
+
this.style = {};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// headers must be set after style
|
|
54
|
+
this.header = value.header;
|
|
55
|
+
this._hidden = !!value.hidden;
|
|
56
|
+
} else {
|
|
57
|
+
delete this._header;
|
|
58
|
+
delete this._key;
|
|
59
|
+
delete this.width;
|
|
60
|
+
this.style = {};
|
|
61
|
+
this.outlineLevel = 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
get headers() {
|
|
65
|
+
return this._header && this._header instanceof Array ? this._header : [this._header];
|
|
66
|
+
}
|
|
67
|
+
get header() {
|
|
68
|
+
return this._header;
|
|
69
|
+
}
|
|
70
|
+
set header(value) {
|
|
71
|
+
if (value !== undefined) {
|
|
72
|
+
this._header = value;
|
|
73
|
+
this.headers.forEach((text, index) => {
|
|
74
|
+
this._worksheet.getCell(index + 1, this.number).value = text;
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
this._header = undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
get key() {
|
|
81
|
+
return this._key;
|
|
82
|
+
}
|
|
83
|
+
set key(value) {
|
|
84
|
+
const column = this._key && this._worksheet.getColumnKey(this._key);
|
|
85
|
+
if (column === this) {
|
|
86
|
+
this._worksheet.deleteColumnKey(this._key);
|
|
87
|
+
}
|
|
88
|
+
this._key = value;
|
|
89
|
+
if (value) {
|
|
90
|
+
this._worksheet.setColumnKey(this._key, this);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
get hidden() {
|
|
94
|
+
return !!this._hidden;
|
|
95
|
+
}
|
|
96
|
+
set hidden(value) {
|
|
97
|
+
this._hidden = value;
|
|
98
|
+
}
|
|
99
|
+
get outlineLevel() {
|
|
100
|
+
return this._outlineLevel || 0;
|
|
101
|
+
}
|
|
102
|
+
set outlineLevel(value) {
|
|
103
|
+
this._outlineLevel = value;
|
|
104
|
+
}
|
|
105
|
+
get collapsed() {
|
|
106
|
+
return !!(this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol);
|
|
107
|
+
}
|
|
108
|
+
toString() {
|
|
109
|
+
return JSON.stringify({
|
|
110
|
+
key: this.key,
|
|
111
|
+
width: this.width,
|
|
112
|
+
headers: this.headers.length ? this.headers : undefined
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
equivalentTo(other) {
|
|
116
|
+
return this.width === other.width && this.hidden === other.hidden && this.outlineLevel === other.outlineLevel && _.isEqual(this.style, other.style);
|
|
117
|
+
}
|
|
118
|
+
get isDefault() {
|
|
119
|
+
if (this.isCustomWidth) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
if (this.hidden) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (this.outlineLevel) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const s = this.style;
|
|
129
|
+
if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
get headerCount() {
|
|
135
|
+
return this.headers.length;
|
|
136
|
+
}
|
|
137
|
+
eachCell(options, iteratee) {
|
|
138
|
+
const colNumber = this.number;
|
|
139
|
+
if (!iteratee) {
|
|
140
|
+
iteratee = options;
|
|
141
|
+
options = null;
|
|
142
|
+
}
|
|
143
|
+
this._worksheet.eachRow(options, (row, rowNumber) => {
|
|
144
|
+
iteratee(row.getCell(colNumber), rowNumber);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
get values() {
|
|
148
|
+
const v = [];
|
|
149
|
+
this.eachCell((cell, rowNumber) => {
|
|
150
|
+
if (cell && cell.type !== Enums.ValueType.Null) {
|
|
151
|
+
v[rowNumber] = cell.value;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
return v;
|
|
155
|
+
}
|
|
156
|
+
set values(v) {
|
|
157
|
+
if (!v) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const colNumber = this.number;
|
|
161
|
+
let offset = 0;
|
|
162
|
+
if (v.hasOwnProperty('0')) {
|
|
163
|
+
// assume contiguous array, start at row 1
|
|
164
|
+
offset = 1;
|
|
165
|
+
}
|
|
166
|
+
v.forEach((value, index) => {
|
|
167
|
+
this._worksheet.getCell(index + offset, colNumber).value = value;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// =========================================================================
|
|
172
|
+
// styles
|
|
173
|
+
_applyStyle(name, value) {
|
|
174
|
+
this.style[name] = value;
|
|
175
|
+
this.eachCell(cell => {
|
|
176
|
+
cell[name] = value;
|
|
177
|
+
});
|
|
178
|
+
return value;
|
|
179
|
+
}
|
|
180
|
+
get numFmt() {
|
|
181
|
+
return this.style.numFmt;
|
|
182
|
+
}
|
|
183
|
+
set numFmt(value) {
|
|
184
|
+
this._applyStyle('numFmt', value);
|
|
185
|
+
}
|
|
186
|
+
get font() {
|
|
187
|
+
return this.style.font;
|
|
188
|
+
}
|
|
189
|
+
set font(value) {
|
|
190
|
+
this._applyStyle('font', value);
|
|
191
|
+
}
|
|
192
|
+
get alignment() {
|
|
193
|
+
return this.style.alignment;
|
|
194
|
+
}
|
|
195
|
+
set alignment(value) {
|
|
196
|
+
this._applyStyle('alignment', value);
|
|
197
|
+
}
|
|
198
|
+
get protection() {
|
|
199
|
+
return this.style.protection;
|
|
200
|
+
}
|
|
201
|
+
set protection(value) {
|
|
202
|
+
this._applyStyle('protection', value);
|
|
203
|
+
}
|
|
204
|
+
get border() {
|
|
205
|
+
return this.style.border;
|
|
206
|
+
}
|
|
207
|
+
set border(value) {
|
|
208
|
+
this._applyStyle('border', value);
|
|
209
|
+
}
|
|
210
|
+
get fill() {
|
|
211
|
+
return this.style.fill;
|
|
212
|
+
}
|
|
213
|
+
set fill(value) {
|
|
214
|
+
this._applyStyle('fill', value);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// static functions
|
|
219
|
+
|
|
220
|
+
static toModel(columns) {
|
|
221
|
+
// Convert array of Column into compressed list cols
|
|
222
|
+
const cols = [];
|
|
223
|
+
let col = null;
|
|
224
|
+
if (columns) {
|
|
225
|
+
columns.forEach((column, index) => {
|
|
226
|
+
if (column.isDefault) {
|
|
227
|
+
if (col) {
|
|
228
|
+
col = null;
|
|
229
|
+
}
|
|
230
|
+
} else if (!col || !column.equivalentTo(col)) {
|
|
231
|
+
col = {
|
|
232
|
+
min: index + 1,
|
|
233
|
+
max: index + 1,
|
|
234
|
+
width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,
|
|
235
|
+
style: column.style,
|
|
236
|
+
isCustomWidth: column.isCustomWidth,
|
|
237
|
+
hidden: column.hidden,
|
|
238
|
+
outlineLevel: column.outlineLevel,
|
|
239
|
+
collapsed: column.collapsed
|
|
240
|
+
};
|
|
241
|
+
cols.push(col);
|
|
242
|
+
} else {
|
|
243
|
+
col.max = index + 1;
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
return cols.length ? cols : undefined;
|
|
248
|
+
}
|
|
249
|
+
static fromModel(worksheet, cols) {
|
|
250
|
+
cols = cols || [];
|
|
251
|
+
const columns = [];
|
|
252
|
+
let count = 1;
|
|
253
|
+
let index = 0;
|
|
254
|
+
/**
|
|
255
|
+
* sort cols by min
|
|
256
|
+
* If it is not sorted, the subsequent column configuration will be overwritten
|
|
257
|
+
* */
|
|
258
|
+
cols = cols.sort(function (pre, next) {
|
|
259
|
+
return pre.min - next.min;
|
|
260
|
+
});
|
|
261
|
+
while (index < cols.length) {
|
|
262
|
+
const col = cols[index++];
|
|
263
|
+
while (count < col.min) {
|
|
264
|
+
columns.push(new Column(worksheet, count++));
|
|
265
|
+
}
|
|
266
|
+
while (count <= col.max) {
|
|
267
|
+
columns.push(new Column(worksheet, count++, col));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return columns.length ? columns : null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
module.exports = Column;
|
|
274
|
+
//# sourceMappingURL=column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.js","names":["_","require","Enums","colCache","DEFAULT_COLUMN_WIDTH","Column","constructor","worksheet","number","defn","_worksheet","_number","letter","n2l","isCustomWidth","width","undefined","header","_header","key","style","hidden","outlineLevel","value","_hidden","_key","headers","Array","forEach","text","index","getCell","column","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","collapsed","properties","outlineLevelCol","toString","JSON","stringify","length","equivalentTo","other","isEqual","isDefault","s","font","numFmt","alignment","border","fill","protection","headerCount","eachCell","options","iteratee","colNumber","eachRow","row","rowNumber","values","v","cell","type","ValueType","Null","offset","hasOwnProperty","_applyStyle","name","toModel","columns","cols","col","min","max","push","fromModel","count","sort","pre","next","module","exports"],"sources":["../../../lib/doc/column.js"],"sourcesContent":["'use strict';\r\n\r\nconst _ = require('../utils/under-dash');\r\n\r\nconst Enums = require('./enums');\r\nconst colCache = require('../utils/col-cache');\r\n\r\nconst DEFAULT_COLUMN_WIDTH = 9;\r\n\r\n// Column defines the column properties for 1 column.\r\n// This includes header rows, widths, key, (style), etc.\r\n// Worksheet will condense the columns as appropriate during serialization\r\nclass Column {\r\n constructor(worksheet, number, defn) {\r\n this._worksheet = worksheet;\r\n this._number = number;\r\n if (defn !== false) {\r\n // sometimes defn will follow\r\n this.defn = defn;\r\n }\r\n }\r\n\r\n get number() {\r\n return this._number;\r\n }\r\n\r\n get worksheet() {\r\n return this._worksheet;\r\n }\r\n\r\n get letter() {\r\n return colCache.n2l(this._number);\r\n }\r\n\r\n get isCustomWidth() {\r\n return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;\r\n }\r\n\r\n get defn() {\r\n return {\r\n header: this._header,\r\n key: this.key,\r\n width: this.width,\r\n style: this.style,\r\n hidden: this.hidden,\r\n outlineLevel: this.outlineLevel,\r\n };\r\n }\r\n\r\n set defn(value) {\r\n if (value) {\r\n this.key = value.key;\r\n this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;\r\n this.outlineLevel = value.outlineLevel;\r\n if (value.style) {\r\n this.style = value.style;\r\n } else {\r\n this.style = {};\r\n }\r\n\r\n // headers must be set after style\r\n this.header = value.header;\r\n this._hidden = !!value.hidden;\r\n } else {\r\n delete this._header;\r\n delete this._key;\r\n delete this.width;\r\n this.style = {};\r\n this.outlineLevel = 0;\r\n }\r\n }\r\n\r\n get headers() {\r\n return this._header && this._header instanceof Array ? this._header : [this._header];\r\n }\r\n\r\n get header() {\r\n return this._header;\r\n }\r\n\r\n set header(value) {\r\n if (value !== undefined) {\r\n this._header = value;\r\n this.headers.forEach((text, index) => {\r\n this._worksheet.getCell(index + 1, this.number).value = text;\r\n });\r\n } else {\r\n this._header = undefined;\r\n }\r\n }\r\n\r\n get key() {\r\n return this._key;\r\n }\r\n\r\n set key(value) {\r\n const column = this._key && this._worksheet.getColumnKey(this._key);\r\n if (column === this) {\r\n this._worksheet.deleteColumnKey(this._key);\r\n }\r\n\r\n this._key = value;\r\n if (value) {\r\n this._worksheet.setColumnKey(this._key, this);\r\n }\r\n }\r\n\r\n get hidden() {\r\n return !!this._hidden;\r\n }\r\n\r\n set hidden(value) {\r\n this._hidden = value;\r\n }\r\n\r\n get outlineLevel() {\r\n return this._outlineLevel || 0;\r\n }\r\n\r\n set outlineLevel(value) {\r\n this._outlineLevel = value;\r\n }\r\n\r\n get collapsed() {\r\n return !!(\r\n this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol\r\n );\r\n }\r\n\r\n toString() {\r\n return JSON.stringify({\r\n key: this.key,\r\n width: this.width,\r\n headers: this.headers.length ? this.headers : undefined,\r\n });\r\n }\r\n\r\n equivalentTo(other) {\r\n return (\r\n this.width === other.width &&\r\n this.hidden === other.hidden &&\r\n this.outlineLevel === other.outlineLevel &&\r\n _.isEqual(this.style, other.style)\r\n );\r\n }\r\n\r\n get isDefault() {\r\n if (this.isCustomWidth) {\r\n return false;\r\n }\r\n if (this.hidden) {\r\n return false;\r\n }\r\n if (this.outlineLevel) {\r\n return false;\r\n }\r\n const s = this.style;\r\n if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get headerCount() {\r\n return this.headers.length;\r\n }\r\n\r\n eachCell(options, iteratee) {\r\n const colNumber = this.number;\r\n if (!iteratee) {\r\n iteratee = options;\r\n options = null;\r\n }\r\n this._worksheet.eachRow(options, (row, rowNumber) => {\r\n iteratee(row.getCell(colNumber), rowNumber);\r\n });\r\n }\r\n\r\n get values() {\r\n const v = [];\r\n this.eachCell((cell, rowNumber) => {\r\n if (cell && cell.type !== Enums.ValueType.Null) {\r\n v[rowNumber] = cell.value;\r\n }\r\n });\r\n return v;\r\n }\r\n\r\n set values(v) {\r\n if (!v) {\r\n return;\r\n }\r\n const colNumber = this.number;\r\n let offset = 0;\r\n if (v.hasOwnProperty('0')) {\r\n // assume contiguous array, start at row 1\r\n offset = 1;\r\n }\r\n v.forEach((value, index) => {\r\n this._worksheet.getCell(index + offset, colNumber).value = value;\r\n });\r\n }\r\n\r\n // =========================================================================\r\n // styles\r\n _applyStyle(name, value) {\r\n this.style[name] = value;\r\n this.eachCell(cell => {\r\n cell[name] = value;\r\n });\r\n return value;\r\n }\r\n\r\n get numFmt() {\r\n return this.style.numFmt;\r\n }\r\n\r\n set numFmt(value) {\r\n this._applyStyle('numFmt', value);\r\n }\r\n\r\n get font() {\r\n return this.style.font;\r\n }\r\n\r\n set font(value) {\r\n this._applyStyle('font', value);\r\n }\r\n\r\n get alignment() {\r\n return this.style.alignment;\r\n }\r\n\r\n set alignment(value) {\r\n this._applyStyle('alignment', value);\r\n }\r\n\r\n get protection() {\r\n return this.style.protection;\r\n }\r\n\r\n set protection(value) {\r\n this._applyStyle('protection', value);\r\n }\r\n\r\n get border() {\r\n return this.style.border;\r\n }\r\n\r\n set border(value) {\r\n this._applyStyle('border', value);\r\n }\r\n\r\n get fill() {\r\n return this.style.fill;\r\n }\r\n\r\n set fill(value) {\r\n this._applyStyle('fill', value);\r\n }\r\n\r\n // =============================================================================\r\n // static functions\r\n\r\n static toModel(columns) {\r\n // Convert array of Column into compressed list cols\r\n const cols = [];\r\n let col = null;\r\n if (columns) {\r\n columns.forEach((column, index) => {\r\n if (column.isDefault) {\r\n if (col) {\r\n col = null;\r\n }\r\n } else if (!col || !column.equivalentTo(col)) {\r\n col = {\r\n min: index + 1,\r\n max: index + 1,\r\n width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,\r\n style: column.style,\r\n isCustomWidth: column.isCustomWidth,\r\n hidden: column.hidden,\r\n outlineLevel: column.outlineLevel,\r\n collapsed: column.collapsed,\r\n };\r\n cols.push(col);\r\n } else {\r\n col.max = index + 1;\r\n }\r\n });\r\n }\r\n return cols.length ? cols : undefined;\r\n }\r\n\r\n static fromModel(worksheet, cols) {\r\n cols = cols || [];\r\n const columns = [];\r\n let count = 1;\r\n let index = 0;\r\n /**\r\n * sort cols by min\r\n * If it is not sorted, the subsequent column configuration will be overwritten\r\n * */\r\n cols = cols.sort(function(pre, next) {\r\n return pre.min - next.min;\r\n });\r\n while (index < cols.length) {\r\n const col = cols[index++];\r\n while (count < col.min) {\r\n columns.push(new Column(worksheet, count++));\r\n }\r\n while (count <= col.max) {\r\n columns.push(new Column(worksheet, count++, col));\r\n }\r\n }\r\n return columns.length ? columns : null;\r\n }\r\n}\r\n\r\nmodule.exports = Column;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class DataValidations {
|
|
4
|
+
constructor(model) {
|
|
5
|
+
this.model = model || {};
|
|
6
|
+
}
|
|
7
|
+
add(address, validation) {
|
|
8
|
+
return this.model[address] = validation;
|
|
9
|
+
}
|
|
10
|
+
find(address) {
|
|
11
|
+
return this.model[address];
|
|
12
|
+
}
|
|
13
|
+
remove(address) {
|
|
14
|
+
this.model[address] = undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
module.exports = DataValidations;
|
|
18
|
+
//# sourceMappingURL=data-validations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-validations.js","names":["DataValidations","constructor","model","add","address","validation","find","remove","undefined","module","exports"],"sources":["../../../lib/doc/data-validations.js"],"sourcesContent":["class DataValidations {\r\n constructor(model) {\r\n this.model = model || {};\r\n }\r\n\r\n add(address, validation) {\r\n return (this.model[address] = validation);\r\n }\r\n\r\n find(address) {\r\n return this.model[address];\r\n }\r\n\r\n remove(address) {\r\n this.model[address] = undefined;\r\n }\r\n}\r\n\r\nmodule.exports = DataValidations;\r\n"],"mappings":";;AAAA,MAAMA,eAAe,CAAC;EACpBC,WAAWA,CAACC,KAAK,EAAE;IACjB,IAAI,CAACA,KAAK,GAAGA,KAAK,IAAI,CAAC,CAAC;EAC1B;EAEAC,GAAGA,CAACC,OAAO,EAAEC,UAAU,EAAE;IACvB,OAAQ,IAAI,CAACH,KAAK,CAACE,OAAO,CAAC,GAAGC,UAAU;EAC1C;EAEAC,IAAIA,CAACF,OAAO,EAAE;IACZ,OAAO,IAAI,CAACF,KAAK,CAACE,OAAO,CAAC;EAC5B;EAEAG,MAAMA,CAACH,OAAO,EAAE;IACd,IAAI,CAACF,KAAK,CAACE,OAAO,CAAC,GAAGI,SAAS;EACjC;AACF;AAEAC,MAAM,CAACC,OAAO,GAAGV,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const _ = require('../utils/under-dash');
|
|
4
|
+
const colCache = require('../utils/col-cache');
|
|
5
|
+
const CellMatrix = require('../utils/cell-matrix');
|
|
6
|
+
const Range = require('./range');
|
|
7
|
+
const rangeRegexp = /[$](\w+)[$](\d+)(:[$](\w+)[$](\d+))?/;
|
|
8
|
+
class DefinedNames {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.matrixMap = {};
|
|
11
|
+
}
|
|
12
|
+
getMatrix(name) {
|
|
13
|
+
const matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix());
|
|
14
|
+
return matrix;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2
|
|
18
|
+
add(locStr, name) {
|
|
19
|
+
const location = colCache.decodeEx(locStr);
|
|
20
|
+
this.addEx(location, name);
|
|
21
|
+
}
|
|
22
|
+
addEx(location, name) {
|
|
23
|
+
const matrix = this.getMatrix(name);
|
|
24
|
+
if (location.top) {
|
|
25
|
+
for (let col = location.left; col <= location.right; col++) {
|
|
26
|
+
for (let row = location.top; row <= location.bottom; row++) {
|
|
27
|
+
const address = {
|
|
28
|
+
sheetName: location.sheetName,
|
|
29
|
+
address: colCache.n2l(col) + row,
|
|
30
|
+
row,
|
|
31
|
+
col
|
|
32
|
+
};
|
|
33
|
+
matrix.addCellEx(address);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
matrix.addCellEx(location);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
remove(locStr, name) {
|
|
41
|
+
const location = colCache.decodeEx(locStr);
|
|
42
|
+
this.removeEx(location, name);
|
|
43
|
+
}
|
|
44
|
+
removeEx(location, name) {
|
|
45
|
+
const matrix = this.getMatrix(name);
|
|
46
|
+
matrix.removeCellEx(location);
|
|
47
|
+
}
|
|
48
|
+
removeAllNames(location) {
|
|
49
|
+
_.each(this.matrixMap, matrix => {
|
|
50
|
+
matrix.removeCellEx(location);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
forEach(callback) {
|
|
54
|
+
_.each(this.matrixMap, (matrix, name) => {
|
|
55
|
+
matrix.forEach(cell => {
|
|
56
|
+
callback(name, cell);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// get all the names of a cell
|
|
62
|
+
getNames(addressStr) {
|
|
63
|
+
return this.getNamesEx(colCache.decodeEx(addressStr));
|
|
64
|
+
}
|
|
65
|
+
getNamesEx(address) {
|
|
66
|
+
return _.map(this.matrixMap, (matrix, name) => matrix.findCellEx(address) && name).filter(Boolean);
|
|
67
|
+
}
|
|
68
|
+
_explore(matrix, cell) {
|
|
69
|
+
cell.mark = false;
|
|
70
|
+
const {
|
|
71
|
+
sheetName
|
|
72
|
+
} = cell;
|
|
73
|
+
const range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName);
|
|
74
|
+
let x;
|
|
75
|
+
let y;
|
|
76
|
+
|
|
77
|
+
// grow vertical - only one col to worry about
|
|
78
|
+
function vGrow(yy, edge) {
|
|
79
|
+
const c = matrix.findCellAt(sheetName, yy, cell.col);
|
|
80
|
+
if (!c || !c.mark) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
range[edge] = yy;
|
|
84
|
+
c.mark = false;
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
for (y = cell.row - 1; vGrow(y, 'top'); y--);
|
|
88
|
+
for (y = cell.row + 1; vGrow(y, 'bottom'); y++);
|
|
89
|
+
|
|
90
|
+
// grow horizontal - ensure all rows can grow
|
|
91
|
+
function hGrow(xx, edge) {
|
|
92
|
+
const cells = [];
|
|
93
|
+
for (y = range.top; y <= range.bottom; y++) {
|
|
94
|
+
const c = matrix.findCellAt(sheetName, y, xx);
|
|
95
|
+
if (c && c.mark) {
|
|
96
|
+
cells.push(c);
|
|
97
|
+
} else {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
range[edge] = xx;
|
|
102
|
+
for (let i = 0; i < cells.length; i++) {
|
|
103
|
+
cells[i].mark = false;
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
for (x = cell.col - 1; hGrow(x, 'left'); x--);
|
|
108
|
+
for (x = cell.col + 1; hGrow(x, 'right'); x++);
|
|
109
|
+
return range;
|
|
110
|
+
}
|
|
111
|
+
getRanges(name, matrix) {
|
|
112
|
+
matrix = matrix || this.matrixMap[name];
|
|
113
|
+
if (!matrix) {
|
|
114
|
+
return {
|
|
115
|
+
name,
|
|
116
|
+
ranges: []
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// mark and sweep!
|
|
121
|
+
matrix.forEach(cell => {
|
|
122
|
+
cell.mark = true;
|
|
123
|
+
});
|
|
124
|
+
const ranges = matrix.map(cell => cell.mark && this._explore(matrix, cell)).filter(Boolean).map(range => range.$shortRange);
|
|
125
|
+
return {
|
|
126
|
+
name,
|
|
127
|
+
ranges
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
normaliseMatrix(matrix, sheetName) {
|
|
131
|
+
// some of the cells might have shifted on specified sheet
|
|
132
|
+
// need to reassign rows, cols
|
|
133
|
+
matrix.forEachInSheet(sheetName, (cell, row, col) => {
|
|
134
|
+
if (cell) {
|
|
135
|
+
if (cell.row !== row || cell.col !== col) {
|
|
136
|
+
cell.row = row;
|
|
137
|
+
cell.col = col;
|
|
138
|
+
cell.address = colCache.n2l(col) + row;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
spliceRows(sheetName, start, numDelete, numInsert) {
|
|
144
|
+
_.each(this.matrixMap, matrix => {
|
|
145
|
+
matrix.spliceRows(sheetName, start, numDelete, numInsert);
|
|
146
|
+
this.normaliseMatrix(matrix, sheetName);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
spliceColumns(sheetName, start, numDelete, numInsert) {
|
|
150
|
+
_.each(this.matrixMap, matrix => {
|
|
151
|
+
matrix.spliceColumns(sheetName, start, numDelete, numInsert);
|
|
152
|
+
this.normaliseMatrix(matrix, sheetName);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
get model() {
|
|
156
|
+
// To get names per cell - just iterate over all names finding cells if they exist
|
|
157
|
+
return _.map(this.matrixMap, (matrix, name) => this.getRanges(name, matrix)).filter(definedName => definedName.ranges.length);
|
|
158
|
+
}
|
|
159
|
+
set model(value) {
|
|
160
|
+
// value is [ { name, ranges }, ... ]
|
|
161
|
+
const matrixMap = this.matrixMap = {};
|
|
162
|
+
value.forEach(definedName => {
|
|
163
|
+
const matrix = matrixMap[definedName.name] = new CellMatrix();
|
|
164
|
+
definedName.ranges.forEach(rangeStr => {
|
|
165
|
+
if (rangeRegexp.test(rangeStr.split('!').pop() || '')) {
|
|
166
|
+
matrix.addCell(rangeStr);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
module.exports = DefinedNames;
|
|
173
|
+
//# sourceMappingURL=defined-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defined-names.js","names":["_","require","colCache","CellMatrix","Range","rangeRegexp","DefinedNames","constructor","matrixMap","getMatrix","name","matrix","add","locStr","location","decodeEx","addEx","top","col","left","right","row","bottom","address","sheetName","n2l","addCellEx","remove","removeEx","removeCellEx","removeAllNames","each","forEach","callback","cell","getNames","addressStr","getNamesEx","map","findCellEx","filter","Boolean","_explore","mark","range","x","y","vGrow","yy","edge","c","findCellAt","hGrow","xx","cells","push","i","length","getRanges","ranges","$shortRange","normaliseMatrix","forEachInSheet","spliceRows","start","numDelete","numInsert","spliceColumns","model","definedName","value","rangeStr","test","split","pop","addCell","module","exports"],"sources":["../../../lib/doc/defined-names.js"],"sourcesContent":["'use strict';\r\n\r\nconst _ = require('../utils/under-dash');\r\nconst colCache = require('../utils/col-cache');\r\nconst CellMatrix = require('../utils/cell-matrix');\r\nconst Range = require('./range');\r\n\r\nconst rangeRegexp = /[$](\\w+)[$](\\d+)(:[$](\\w+)[$](\\d+))?/;\r\n\r\nclass DefinedNames {\r\n constructor() {\r\n this.matrixMap = {};\r\n }\r\n\r\n getMatrix(name) {\r\n const matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix());\r\n return matrix;\r\n }\r\n\r\n // add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2\r\n add(locStr, name) {\r\n const location = colCache.decodeEx(locStr);\r\n this.addEx(location, name);\r\n }\r\n\r\n addEx(location, name) {\r\n const matrix = this.getMatrix(name);\r\n if (location.top) {\r\n for (let col = location.left; col <= location.right; col++) {\r\n for (let row = location.top; row <= location.bottom; row++) {\r\n const address = {\r\n sheetName: location.sheetName,\r\n address: colCache.n2l(col) + row,\r\n row,\r\n col,\r\n };\r\n\r\n matrix.addCellEx(address);\r\n }\r\n }\r\n } else {\r\n matrix.addCellEx(location);\r\n }\r\n }\r\n\r\n remove(locStr, name) {\r\n const location = colCache.decodeEx(locStr);\r\n this.removeEx(location, name);\r\n }\r\n\r\n removeEx(location, name) {\r\n const matrix = this.getMatrix(name);\r\n matrix.removeCellEx(location);\r\n }\r\n\r\n removeAllNames(location) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.removeCellEx(location);\r\n });\r\n }\r\n\r\n forEach(callback) {\r\n _.each(this.matrixMap, (matrix, name) => {\r\n matrix.forEach(cell => {\r\n callback(name, cell);\r\n });\r\n });\r\n }\r\n\r\n // get all the names of a cell\r\n getNames(addressStr) {\r\n return this.getNamesEx(colCache.decodeEx(addressStr));\r\n }\r\n\r\n getNamesEx(address) {\r\n return _.map(this.matrixMap, (matrix, name) => matrix.findCellEx(address) && name).filter(\r\n Boolean\r\n );\r\n }\r\n\r\n _explore(matrix, cell) {\r\n cell.mark = false;\r\n const {sheetName} = cell;\r\n\r\n const range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName);\r\n let x;\r\n let y;\r\n\r\n // grow vertical - only one col to worry about\r\n function vGrow(yy, edge) {\r\n const c = matrix.findCellAt(sheetName, yy, cell.col);\r\n if (!c || !c.mark) {\r\n return false;\r\n }\r\n range[edge] = yy;\r\n c.mark = false;\r\n return true;\r\n }\r\n for (y = cell.row - 1; vGrow(y, 'top'); y--);\r\n for (y = cell.row + 1; vGrow(y, 'bottom'); y++);\r\n\r\n // grow horizontal - ensure all rows can grow\r\n function hGrow(xx, edge) {\r\n const cells = [];\r\n for (y = range.top; y <= range.bottom; y++) {\r\n const c = matrix.findCellAt(sheetName, y, xx);\r\n if (c && c.mark) {\r\n cells.push(c);\r\n } else {\r\n return false;\r\n }\r\n }\r\n range[edge] = xx;\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i].mark = false;\r\n }\r\n return true;\r\n }\r\n for (x = cell.col - 1; hGrow(x, 'left'); x--);\r\n for (x = cell.col + 1; hGrow(x, 'right'); x++);\r\n\r\n return range;\r\n }\r\n\r\n getRanges(name, matrix) {\r\n matrix = matrix || this.matrixMap[name];\r\n\r\n if (!matrix) {\r\n return {name, ranges: []};\r\n }\r\n\r\n // mark and sweep!\r\n matrix.forEach(cell => {\r\n cell.mark = true;\r\n });\r\n const ranges = matrix\r\n .map(cell => cell.mark && this._explore(matrix, cell))\r\n .filter(Boolean)\r\n .map(range => range.$shortRange);\r\n\r\n return {\r\n name,\r\n ranges,\r\n };\r\n }\r\n\r\n normaliseMatrix(matrix, sheetName) {\r\n // some of the cells might have shifted on specified sheet\r\n // need to reassign rows, cols\r\n matrix.forEachInSheet(sheetName, (cell, row, col) => {\r\n if (cell) {\r\n if (cell.row !== row || cell.col !== col) {\r\n cell.row = row;\r\n cell.col = col;\r\n cell.address = colCache.n2l(col) + row;\r\n }\r\n }\r\n });\r\n }\r\n\r\n spliceRows(sheetName, start, numDelete, numInsert) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.spliceRows(sheetName, start, numDelete, numInsert);\r\n this.normaliseMatrix(matrix, sheetName);\r\n });\r\n }\r\n\r\n spliceColumns(sheetName, start, numDelete, numInsert) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.spliceColumns(sheetName, start, numDelete, numInsert);\r\n this.normaliseMatrix(matrix, sheetName);\r\n });\r\n }\r\n\r\n get model() {\r\n // To get names per cell - just iterate over all names finding cells if they exist\r\n return _.map(this.matrixMap, (matrix, name) => this.getRanges(name, matrix)).filter(\r\n definedName => definedName.ranges.length\r\n );\r\n }\r\n\r\n set model(value) {\r\n // value is [ { name, ranges }, ... ]\r\n const matrixMap = (this.matrixMap = {});\r\n value.forEach(definedName => {\r\n const matrix = (matrixMap[definedName.name] = new CellMatrix());\r\n definedName.ranges.forEach(rangeStr => {\r\n if (rangeRegexp.test(rangeStr.split('!').pop() || '')) {\r\n matrix.addCell(rangeStr);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = DefinedNames;\r\n"],"mappings":"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","ignoreList":[]}
|