@nocobase/plugin-action-export 1.7.0-beta.32 → 1.7.0-beta.33

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.
Files changed (456) hide show
  1. package/dist/externalVersion.js +6 -5
  2. package/dist/node_modules/exceljs/LICENSE +22 -0
  3. package/dist/node_modules/exceljs/dist/es5/csv/csv.js +182 -0
  4. package/dist/node_modules/exceljs/dist/es5/csv/line-buffer.js +68 -0
  5. package/dist/node_modules/exceljs/dist/es5/csv/stream-converter.js +110 -0
  6. package/dist/node_modules/exceljs/dist/es5/doc/anchor.js +73 -0
  7. package/dist/node_modules/exceljs/dist/es5/doc/cell.js +961 -0
  8. package/dist/node_modules/exceljs/dist/es5/doc/column.js +274 -0
  9. package/dist/node_modules/exceljs/dist/es5/doc/data-validations.js +18 -0
  10. package/dist/node_modules/exceljs/dist/es5/doc/defined-names.js +173 -0
  11. package/dist/node_modules/exceljs/dist/es5/doc/enums.js +49 -0
  12. package/dist/node_modules/exceljs/dist/es5/doc/image.js +69 -0
  13. package/dist/node_modules/exceljs/dist/es5/doc/modelcontainer.js +16 -0
  14. package/dist/node_modules/exceljs/dist/es5/doc/note.js +64 -0
  15. package/dist/node_modules/exceljs/dist/es5/doc/range.js +229 -0
  16. package/dist/node_modules/exceljs/dist/es5/doc/row.js +382 -0
  17. package/dist/node_modules/exceljs/dist/es5/doc/table.js +443 -0
  18. package/dist/node_modules/exceljs/dist/es5/doc/workbook.js +202 -0
  19. package/dist/node_modules/exceljs/dist/es5/doc/worksheet.js +900 -0
  20. package/dist/node_modules/exceljs/dist/es5/exceljs.bare.js +14 -0
  21. package/dist/node_modules/exceljs/dist/es5/exceljs.browser.js +36 -0
  22. package/dist/node_modules/exceljs/dist/es5/exceljs.nodejs.js +15 -0
  23. package/dist/node_modules/exceljs/dist/es5/index.js +15 -0
  24. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +90 -0
  25. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
  26. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +94 -0
  27. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +362 -0
  28. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +347 -0
  29. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +392 -0
  30. package/dist/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +652 -0
  31. package/dist/node_modules/exceljs/dist/es5/utils/auto-drain.js +18 -0
  32. package/dist/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +15 -0
  33. package/dist/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +18 -0
  34. package/dist/node_modules/exceljs/dist/es5/utils/cell-matrix.js +149 -0
  35. package/dist/node_modules/exceljs/dist/es5/utils/col-cache.js +258 -0
  36. package/dist/node_modules/exceljs/dist/es5/utils/copy-style.js +43 -0
  37. package/dist/node_modules/exceljs/dist/es5/utils/encryptor.js +58 -0
  38. package/dist/node_modules/exceljs/dist/es5/utils/iterate-stream.js +46 -0
  39. package/dist/node_modules/exceljs/dist/es5/utils/parse-sax.js +47 -0
  40. package/dist/node_modules/exceljs/dist/es5/utils/shared-formula.js +42 -0
  41. package/dist/node_modules/exceljs/dist/es5/utils/shared-strings.js +32 -0
  42. package/dist/node_modules/exceljs/dist/es5/utils/stream-base64.js +66 -0
  43. package/dist/node_modules/exceljs/dist/es5/utils/stream-buf.js +343 -0
  44. package/dist/node_modules/exceljs/dist/es5/utils/string-buf.js +73 -0
  45. package/dist/node_modules/exceljs/dist/es5/utils/string-builder.js +32 -0
  46. package/dist/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +61 -0
  47. package/dist/node_modules/exceljs/dist/es5/utils/typed-stack.js +23 -0
  48. package/dist/node_modules/exceljs/dist/es5/utils/under-dash.js +168 -0
  49. package/dist/node_modules/exceljs/dist/es5/utils/utils.js +171 -0
  50. package/dist/node_modules/exceljs/dist/es5/utils/xml-stream.js +151 -0
  51. package/dist/node_modules/exceljs/dist/es5/utils/zip-stream.js +79 -0
  52. package/dist/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +230 -0
  53. package/dist/node_modules/exceljs/dist/es5/xlsx/rel-type.js +18 -0
  54. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +139 -0
  55. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
  56. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
  57. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
  58. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
  59. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
  60. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +234 -0
  61. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +103 -0
  62. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
  63. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
  64. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
  65. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
  66. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +97 -0
  67. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +107 -0
  68. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +92 -0
  69. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +61 -0
  70. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +51 -0
  71. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
  72. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
  73. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +93 -0
  74. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +112 -0
  75. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +158 -0
  76. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
  77. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
  78. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
  79. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
  80. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +40 -0
  81. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
  82. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
  83. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
  84. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
  85. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
  86. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
  87. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
  88. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
  89. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  90. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
  91. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
  92. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  93. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +91 -0
  94. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
  95. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +451 -0
  96. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +275 -0
  97. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
  98. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
  99. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +45 -0
  100. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
  101. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +42 -0
  102. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
  103. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
  104. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +43 -0
  105. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +28 -0
  106. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +88 -0
  107. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
  108. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
  109. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
  110. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +75 -0
  111. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
  112. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +66 -0
  113. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
  114. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
  115. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +247 -0
  116. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
  117. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
  118. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
  119. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
  120. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
  121. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
  122. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +52 -0
  123. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
  124. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
  125. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
  126. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
  127. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
  128. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
  129. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
  130. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +37 -0
  131. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +128 -0
  132. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +51 -0
  133. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
  134. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
  135. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
  136. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
  137. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +513 -0
  138. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
  139. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
  140. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
  141. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
  142. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
  143. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +61 -0
  144. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +98 -0
  145. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
  146. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +99 -0
  147. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +114 -0
  148. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
  149. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
  150. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +185 -0
  151. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +66 -0
  152. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
  153. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +308 -0
  154. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +175 -0
  155. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +59 -0
  156. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
  157. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +118 -0
  158. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +612 -0
  159. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
  160. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
  161. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
  162. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +89 -0
  163. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
  164. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +42 -0
  165. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +40 -0
  166. package/dist/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +123 -0
  167. package/dist/node_modules/exceljs/dist/es5/xlsx/xlsx.js +697 -0
  168. package/dist/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +5 -0
  169. package/dist/node_modules/exceljs/dist/exceljs.bare.js +55253 -0
  170. package/dist/node_modules/exceljs/dist/exceljs.bare.min.js +45 -0
  171. package/dist/node_modules/exceljs/dist/exceljs.js +59900 -0
  172. package/dist/node_modules/exceljs/dist/exceljs.min.js +45 -0
  173. package/dist/node_modules/exceljs/excel.js +97 -0
  174. package/dist/node_modules/exceljs/index.d.ts +2035 -0
  175. package/dist/node_modules/exceljs/index.ts +2 -0
  176. package/dist/node_modules/exceljs/lib/csv/csv.js +191 -0
  177. package/dist/node_modules/exceljs/lib/csv/line-buffer.js +74 -0
  178. package/dist/node_modules/exceljs/lib/csv/stream-converter.js +135 -0
  179. package/dist/node_modules/exceljs/lib/doc/anchor.js +91 -0
  180. package/dist/node_modules/exceljs/lib/doc/cell.js +1124 -0
  181. package/dist/node_modules/exceljs/lib/doc/column.js +320 -0
  182. package/dist/node_modules/exceljs/lib/doc/data/theme1.json +234 -0
  183. package/dist/node_modules/exceljs/lib/doc/data-validations.js +19 -0
  184. package/dist/node_modules/exceljs/lib/doc/defined-names.js +196 -0
  185. package/dist/node_modules/exceljs/lib/doc/enums.js +48 -0
  186. package/dist/node_modules/exceljs/lib/doc/image.js +59 -0
  187. package/dist/node_modules/exceljs/lib/doc/modelcontainer.js +18 -0
  188. package/dist/node_modules/exceljs/lib/doc/note.js +65 -0
  189. package/dist/node_modules/exceljs/lib/doc/range.js +257 -0
  190. package/dist/node_modules/exceljs/lib/doc/row.js +415 -0
  191. package/dist/node_modules/exceljs/lib/doc/table.js +465 -0
  192. package/dist/node_modules/exceljs/lib/doc/workbook.js +221 -0
  193. package/dist/node_modules/exceljs/lib/doc/worksheet.js +927 -0
  194. package/dist/node_modules/exceljs/lib/exceljs.bare.js +13 -0
  195. package/dist/node_modules/exceljs/lib/exceljs.browser.js +36 -0
  196. package/dist/node_modules/exceljs/lib/exceljs.nodejs.js +14 -0
  197. package/dist/node_modules/exceljs/lib/stream/xlsx/hyperlink-reader.js +83 -0
  198. package/dist/node_modules/exceljs/lib/stream/xlsx/sheet-comments-writer.js +121 -0
  199. package/dist/node_modules/exceljs/lib/stream/xlsx/sheet-rels-writer.js +119 -0
  200. package/dist/node_modules/exceljs/lib/stream/xlsx/workbook-reader.js +337 -0
  201. package/dist/node_modules/exceljs/lib/stream/xlsx/workbook-writer.js +347 -0
  202. package/dist/node_modules/exceljs/lib/stream/xlsx/worksheet-reader.js +374 -0
  203. package/dist/node_modules/exceljs/lib/stream/xlsx/worksheet-writer.js +717 -0
  204. package/dist/node_modules/exceljs/lib/utils/auto-drain.js +15 -0
  205. package/dist/node_modules/exceljs/lib/utils/browser-buffer-decode.js +14 -0
  206. package/dist/node_modules/exceljs/lib/utils/browser-buffer-encode.js +15 -0
  207. package/dist/node_modules/exceljs/lib/utils/cell-matrix.js +165 -0
  208. package/dist/node_modules/exceljs/lib/utils/col-cache.js +287 -0
  209. package/dist/node_modules/exceljs/lib/utils/copy-style.js +43 -0
  210. package/dist/node_modules/exceljs/lib/utils/encryptor.js +55 -0
  211. package/dist/node_modules/exceljs/lib/utils/iterate-stream.js +48 -0
  212. package/dist/node_modules/exceljs/lib/utils/parse-sax.js +30 -0
  213. package/dist/node_modules/exceljs/lib/utils/shared-formula.js +44 -0
  214. package/dist/node_modules/exceljs/lib/utils/shared-strings.js +35 -0
  215. package/dist/node_modules/exceljs/lib/utils/stream-base64.js +72 -0
  216. package/dist/node_modules/exceljs/lib/utils/stream-buf.js +364 -0
  217. package/dist/node_modules/exceljs/lib/utils/string-buf.js +82 -0
  218. package/dist/node_modules/exceljs/lib/utils/string-builder.js +35 -0
  219. package/dist/node_modules/exceljs/lib/utils/stuttered-pipe.js +67 -0
  220. package/dist/node_modules/exceljs/lib/utils/typed-stack.js +24 -0
  221. package/dist/node_modules/exceljs/lib/utils/under-dash.js +184 -0
  222. package/dist/node_modules/exceljs/lib/utils/utils.js +172 -0
  223. package/dist/node_modules/exceljs/lib/utils/xml-stream.js +169 -0
  224. package/dist/node_modules/exceljs/lib/utils/zip-stream.js +87 -0
  225. package/dist/node_modules/exceljs/lib/xlsx/.rels +11 -0
  226. package/dist/node_modules/exceljs/lib/xlsx/calcChain.xml +6 -0
  227. package/dist/node_modules/exceljs/lib/xlsx/core.xml +7 -0
  228. package/dist/node_modules/exceljs/lib/xlsx/defaultnumformats.js +153 -0
  229. package/dist/node_modules/exceljs/lib/xlsx/rel-type.js +21 -0
  230. package/dist/node_modules/exceljs/lib/xlsx/styles.xml +41 -0
  231. package/dist/node_modules/exceljs/lib/xlsx/workbook.xml +16 -0
  232. package/dist/node_modules/exceljs/lib/xlsx/xform/base-xform.js +145 -0
  233. package/dist/node_modules/exceljs/lib/xlsx/xform/book/defined-name-xform.js +91 -0
  234. package/dist/node_modules/exceljs/lib/xlsx/xform/book/sheet-xform.js +34 -0
  235. package/dist/node_modules/exceljs/lib/xlsx/xform/book/workbook-calc-properties-xform.js +26 -0
  236. package/dist/node_modules/exceljs/lib/xlsx/xform/book/workbook-properties-xform.js +29 -0
  237. package/dist/node_modules/exceljs/lib/xlsx/xform/book/workbook-view-xform.js +53 -0
  238. package/dist/node_modules/exceljs/lib/xlsx/xform/book/workbook-xform.js +255 -0
  239. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/comment-xform.js +105 -0
  240. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/comments-xform.js +82 -0
  241. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/style/vml-position-xform.js +39 -0
  242. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/style/vml-protection-xform.js +36 -0
  243. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/vml-anchor-xform.js +60 -0
  244. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/vml-client-data-xform.js +95 -0
  245. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/vml-notes-xform.js +107 -0
  246. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/vml-shape-xform.js +95 -0
  247. package/dist/node_modules/exceljs/lib/xlsx/xform/comment/vml-textbox-xform.js +64 -0
  248. package/dist/node_modules/exceljs/lib/xlsx/xform/composite-xform.js +56 -0
  249. package/dist/node_modules/exceljs/lib/xlsx/xform/core/app-heading-pairs-xform.js +32 -0
  250. package/dist/node_modules/exceljs/lib/xlsx/xform/core/app-titles-of-parts-xform.js +28 -0
  251. package/dist/node_modules/exceljs/lib/xlsx/xform/core/app-xform.js +100 -0
  252. package/dist/node_modules/exceljs/lib/xlsx/xform/core/content-types-xform.js +120 -0
  253. package/dist/node_modules/exceljs/lib/xlsx/xform/core/core-xform.js +136 -0
  254. package/dist/node_modules/exceljs/lib/xlsx/xform/core/relationship-xform.js +25 -0
  255. package/dist/node_modules/exceljs/lib/xlsx/xform/core/relationships-xform.js +73 -0
  256. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/base-cell-anchor-xform.js +48 -0
  257. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/blip-fill-xform.js +71 -0
  258. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/blip-xform.js +42 -0
  259. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js +38 -0
  260. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/c-nv-pr-xform.js +68 -0
  261. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/cell-position-xform.js +77 -0
  262. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/drawing-xform.js +109 -0
  263. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/ext-lst-xform.js +43 -0
  264. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/ext-xform.js +44 -0
  265. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/hlink-click-xform.js +41 -0
  266. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/nv-pic-pr-xform.js +65 -0
  267. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  268. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/pic-xform.js +77 -0
  269. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/sp-pr.js +17 -0
  270. package/dist/node_modules/exceljs/lib/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  271. package/dist/node_modules/exceljs/lib/xlsx/xform/list-xform.js +95 -0
  272. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/auto-filter-xform.js +38 -0
  273. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cell-xform.js +498 -0
  274. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/cf-rule-xform.js +301 -0
  275. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/cfvo-xform.js +27 -0
  276. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/color-scale-xform.js +45 -0
  277. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js +48 -0
  278. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js +92 -0
  279. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/databar-xform.js +49 -0
  280. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +87 -0
  281. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/formula-xform.js +25 -0
  282. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf/icon-set-xform.js +47 -0
  283. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +27 -0
  284. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +98 -0
  285. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +43 -0
  286. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +62 -0
  287. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +50 -0
  288. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +98 -0
  289. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js +25 -0
  290. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +73 -0
  291. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +25 -0
  292. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/col-xform.js +86 -0
  293. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/data-validations-xform.js +257 -0
  294. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/dimension-xform.js +29 -0
  295. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/drawing-xform.js +33 -0
  296. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/ext-lst-xform.js +86 -0
  297. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/header-footer-xform.js +146 -0
  298. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/hyperlink-xform.js +54 -0
  299. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/merge-cell-xform.js +27 -0
  300. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/merges.js +56 -0
  301. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/outline-properties-xform.js +43 -0
  302. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/page-breaks-xform.js +27 -0
  303. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/page-margins-xform.js +49 -0
  304. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/page-setup-properties-xform.js +35 -0
  305. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/page-setup-xform.js +103 -0
  306. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/picture-xform.js +33 -0
  307. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/print-options-xform.js +49 -0
  308. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/row-breaks-xform.js +39 -0
  309. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/row-xform.js +142 -0
  310. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/sheet-format-properties-xform.js +55 -0
  311. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/sheet-properties-xform.js +90 -0
  312. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/sheet-protection-xform.js +89 -0
  313. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/sheet-view-xform.js +202 -0
  314. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/table-part-xform.js +33 -0
  315. package/dist/node_modules/exceljs/lib/xlsx/xform/sheet/worksheet-xform.js +539 -0
  316. package/dist/node_modules/exceljs/lib/xlsx/xform/simple/boolean-xform.js +31 -0
  317. package/dist/node_modules/exceljs/lib/xlsx/xform/simple/date-xform.js +66 -0
  318. package/dist/node_modules/exceljs/lib/xlsx/xform/simple/float-xform.js +51 -0
  319. package/dist/node_modules/exceljs/lib/xlsx/xform/simple/integer-xform.js +57 -0
  320. package/dist/node_modules/exceljs/lib/xlsx/xform/simple/string-xform.js +51 -0
  321. package/dist/node_modules/exceljs/lib/xlsx/xform/static-xform.js +64 -0
  322. package/dist/node_modules/exceljs/lib/xlsx/xform/strings/phonetic-text-xform.js +98 -0
  323. package/dist/node_modules/exceljs/lib/xlsx/xform/strings/rich-text-xform.js +101 -0
  324. package/dist/node_modules/exceljs/lib/xlsx/xform/strings/shared-string-xform.js +102 -0
  325. package/dist/node_modules/exceljs/lib/xlsx/xform/strings/shared-strings-xform.js +127 -0
  326. package/dist/node_modules/exceljs/lib/xlsx/xform/strings/text-xform.js +44 -0
  327. package/dist/node_modules/exceljs/lib/xlsx/xform/style/alignment-xform.js +172 -0
  328. package/dist/node_modules/exceljs/lib/xlsx/xform/style/border-xform.js +207 -0
  329. package/dist/node_modules/exceljs/lib/xlsx/xform/style/color-xform.js +63 -0
  330. package/dist/node_modules/exceljs/lib/xlsx/xform/style/dxf-xform.js +111 -0
  331. package/dist/node_modules/exceljs/lib/xlsx/xform/style/fill-xform.js +364 -0
  332. package/dist/node_modules/exceljs/lib/xlsx/xform/style/font-xform.js +102 -0
  333. package/dist/node_modules/exceljs/lib/xlsx/xform/style/numfmt-xform.js +63 -0
  334. package/dist/node_modules/exceljs/lib/xlsx/xform/style/protection-xform.js +60 -0
  335. package/dist/node_modules/exceljs/lib/xlsx/xform/style/style-xform.js +125 -0
  336. package/dist/node_modules/exceljs/lib/xlsx/xform/style/styles-xform.js +527 -0
  337. package/dist/node_modules/exceljs/lib/xlsx/xform/style/underline-xform.js +47 -0
  338. package/dist/node_modules/exceljs/lib/xlsx/xform/table/auto-filter-xform.js +81 -0
  339. package/dist/node_modules/exceljs/lib/xlsx/xform/table/custom-filter-xform.js +33 -0
  340. package/dist/node_modules/exceljs/lib/xlsx/xform/table/filter-column-xform.js +96 -0
  341. package/dist/node_modules/exceljs/lib/xlsx/xform/table/filter-xform.js +31 -0
  342. package/dist/node_modules/exceljs/lib/xlsx/xform/table/table-column-xform.js +44 -0
  343. package/dist/node_modules/exceljs/lib/xlsx/xform/table/table-style-info-xform.js +41 -0
  344. package/dist/node_modules/exceljs/lib/xlsx/xform/table/table-xform.js +131 -0
  345. package/dist/node_modules/exceljs/lib/xlsx/xlsx.js +694 -0
  346. package/dist/node_modules/exceljs/lib/xlsx/xml/theme1.js +3 -0
  347. package/dist/node_modules/exceljs/lib/xlsx/xml/theme1.xml +318 -0
  348. package/dist/node_modules/exceljs/node_modules/readable-stream/errors-browser.js +127 -0
  349. package/dist/node_modules/exceljs/node_modules/readable-stream/errors.js +116 -0
  350. package/dist/node_modules/exceljs/node_modules/readable-stream/experimentalWarning.js +17 -0
  351. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  352. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  353. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  354. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  355. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  356. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  357. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  358. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  359. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  360. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  361. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  362. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  363. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  364. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  365. package/dist/node_modules/exceljs/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  366. package/dist/node_modules/exceljs/node_modules/readable-stream/package.json +68 -0
  367. package/dist/node_modules/exceljs/node_modules/readable-stream/readable-browser.js +9 -0
  368. package/dist/node_modules/exceljs/node_modules/readable-stream/readable.js +16 -0
  369. package/dist/node_modules/exceljs/node_modules/tmp/lib/tmp.js +784 -0
  370. package/dist/node_modules/exceljs/node_modules/tmp/package.json +56 -0
  371. package/dist/node_modules/exceljs/node_modules/uuid/dist/bin/uuid +2 -0
  372. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/index.js +9 -0
  373. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/md5.js +215 -0
  374. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  375. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/parse.js +35 -0
  376. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  377. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/rng.js +19 -0
  378. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
  379. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/stringify.js +30 -0
  380. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v1.js +95 -0
  381. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v3.js +4 -0
  382. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v35.js +64 -0
  383. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v4.js +24 -0
  384. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v5.js +4 -0
  385. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/validate.js +7 -0
  386. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/version.js +11 -0
  387. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/index.js +9 -0
  388. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/md5.js +13 -0
  389. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/nil.js +1 -0
  390. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/parse.js +35 -0
  391. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/regex.js +1 -0
  392. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/rng.js +12 -0
  393. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/sha1.js +13 -0
  394. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/stringify.js +29 -0
  395. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v1.js +95 -0
  396. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v3.js +4 -0
  397. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v35.js +64 -0
  398. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v4.js +24 -0
  399. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v5.js +4 -0
  400. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/validate.js +7 -0
  401. package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/version.js +11 -0
  402. package/dist/node_modules/exceljs/node_modules/uuid/dist/index.js +79 -0
  403. package/dist/node_modules/exceljs/node_modules/uuid/dist/md5-browser.js +223 -0
  404. package/dist/node_modules/exceljs/node_modules/uuid/dist/md5.js +23 -0
  405. package/dist/node_modules/exceljs/node_modules/uuid/dist/nil.js +8 -0
  406. package/dist/node_modules/exceljs/node_modules/uuid/dist/parse.js +45 -0
  407. package/dist/node_modules/exceljs/node_modules/uuid/dist/regex.js +8 -0
  408. package/dist/node_modules/exceljs/node_modules/uuid/dist/rng-browser.js +26 -0
  409. package/dist/node_modules/exceljs/node_modules/uuid/dist/rng.js +24 -0
  410. package/dist/node_modules/exceljs/node_modules/uuid/dist/sha1-browser.js +104 -0
  411. package/dist/node_modules/exceljs/node_modules/uuid/dist/sha1.js +23 -0
  412. package/dist/node_modules/exceljs/node_modules/uuid/dist/stringify.js +39 -0
  413. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuid.min.js +1 -0
  414. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidNIL.min.js +1 -0
  415. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidParse.min.js +1 -0
  416. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidStringify.min.js +1 -0
  417. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidValidate.min.js +1 -0
  418. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidVersion.min.js +1 -0
  419. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv1.min.js +1 -0
  420. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv3.min.js +1 -0
  421. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv4.min.js +1 -0
  422. package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv5.min.js +1 -0
  423. package/dist/node_modules/exceljs/node_modules/uuid/dist/uuid-bin.js +85 -0
  424. package/dist/node_modules/exceljs/node_modules/uuid/dist/v1.js +107 -0
  425. package/dist/node_modules/exceljs/node_modules/uuid/dist/v3.js +16 -0
  426. package/dist/node_modules/exceljs/node_modules/uuid/dist/v35.js +78 -0
  427. package/dist/node_modules/exceljs/node_modules/uuid/dist/v4.js +37 -0
  428. package/dist/node_modules/exceljs/node_modules/uuid/dist/v5.js +16 -0
  429. package/dist/node_modules/exceljs/node_modules/uuid/dist/validate.js +17 -0
  430. package/dist/node_modules/exceljs/node_modules/uuid/dist/version.js +21 -0
  431. package/dist/node_modules/exceljs/node_modules/uuid/package.json +135 -0
  432. package/dist/node_modules/exceljs/package.json +1 -0
  433. package/dist/server/actions/export-xlsx.js +12 -4
  434. package/dist/server/index.d.ts +3 -0
  435. package/dist/server/index.js +10 -1
  436. package/dist/server/services/base-exporter.d.ts +7 -2
  437. package/dist/server/services/base-exporter.js +68 -18
  438. package/dist/server/services/xlsx-exporter.d.ts +6 -5
  439. package/dist/server/services/xlsx-exporter.js +32 -47
  440. package/package.json +2 -2
  441. package/dist/node_modules/xlsx/LICENSE +0 -201
  442. package/dist/node_modules/xlsx/bin/xlsx.njs +0 -310
  443. package/dist/node_modules/xlsx/bower.json +0 -22
  444. package/dist/node_modules/xlsx/dist/cpexcel.d.ts +0 -39
  445. package/dist/node_modules/xlsx/dist/cpexcel.js +0 -1506
  446. package/dist/node_modules/xlsx/dist/shim.min.js +0 -2
  447. package/dist/node_modules/xlsx/dist/xlsx.core.min.js +0 -17
  448. package/dist/node_modules/xlsx/dist/xlsx.extendscript.js +0 -27961
  449. package/dist/node_modules/xlsx/dist/xlsx.full.min.js +0 -24
  450. package/dist/node_modules/xlsx/dist/xlsx.mini.min.js +0 -10
  451. package/dist/node_modules/xlsx/dist/xlsx.zahl.js +0 -4
  452. package/dist/node_modules/xlsx/dist/zahl.d.ts +0 -4
  453. package/dist/node_modules/xlsx/package.json +0 -1
  454. package/dist/node_modules/xlsx/types/index.d.ts +0 -1033
  455. package/dist/node_modules/xlsx/xlsx.js +0 -7
  456. package/dist/node_modules/xlsx/xlsxworker.js +0 -14
@@ -0,0 +1,900 @@
1
+ "use strict";
2
+
3
+ const _ = require('../utils/under-dash');
4
+ const colCache = require('../utils/col-cache');
5
+ const Range = require('./range');
6
+ const Row = require('./row');
7
+ const Column = require('./column');
8
+ const Enums = require('./enums');
9
+ const Image = require('./image');
10
+ const Table = require('./table');
11
+ const DataValidations = require('./data-validations');
12
+ const Encryptor = require('../utils/encryptor');
13
+ const {
14
+ copyStyle
15
+ } = require('../utils/copy-style');
16
+
17
+ // Worksheet requirements
18
+ // Operate as sheet inside workbook or standalone
19
+ // Load and Save from file and stream
20
+ // Access/Add/Delete individual cells
21
+ // Manage column widths and row heights
22
+
23
+ class Worksheet {
24
+ constructor(options) {
25
+ options = options || {};
26
+ this._workbook = options.workbook;
27
+
28
+ // in a workbook, each sheet will have a number
29
+ this.id = options.id;
30
+ this.orderNo = options.orderNo;
31
+
32
+ // and a name
33
+ this.name = options.name;
34
+
35
+ // add a state
36
+ this.state = options.state || 'visible';
37
+
38
+ // rows allows access organised by row. Sparse array of arrays indexed by row-1, col
39
+ // Note: _rows is zero based. Must subtract 1 to go from cell.row to index
40
+ this._rows = [];
41
+
42
+ // column definitions
43
+ this._columns = null;
44
+
45
+ // column keys (addRow convenience): key ==> this._collumns index
46
+ this._keys = {};
47
+
48
+ // keep record of all merges
49
+ this._merges = {};
50
+
51
+ // record of all row and column pageBreaks
52
+ this.rowBreaks = [];
53
+
54
+ // for tabColor, default row height, outline levels, etc
55
+ this.properties = Object.assign({}, {
56
+ defaultRowHeight: 15,
57
+ dyDescent: 55,
58
+ outlineLevelCol: 0,
59
+ outlineLevelRow: 0
60
+ }, options.properties);
61
+
62
+ // for all things printing
63
+ this.pageSetup = Object.assign({}, {
64
+ margins: {
65
+ left: 0.7,
66
+ right: 0.7,
67
+ top: 0.75,
68
+ bottom: 0.75,
69
+ header: 0.3,
70
+ footer: 0.3
71
+ },
72
+ orientation: 'portrait',
73
+ horizontalDpi: 4294967295,
74
+ verticalDpi: 4294967295,
75
+ fitToPage: !!(options.pageSetup && (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) && !options.pageSetup.scale),
76
+ pageOrder: 'downThenOver',
77
+ blackAndWhite: false,
78
+ draft: false,
79
+ cellComments: 'None',
80
+ errors: 'displayed',
81
+ scale: 100,
82
+ fitToWidth: 1,
83
+ fitToHeight: 1,
84
+ paperSize: undefined,
85
+ showRowColHeaders: false,
86
+ showGridLines: false,
87
+ firstPageNumber: undefined,
88
+ horizontalCentered: false,
89
+ verticalCentered: false,
90
+ rowBreaks: null,
91
+ colBreaks: null
92
+ }, options.pageSetup);
93
+ this.headerFooter = Object.assign({}, {
94
+ differentFirst: false,
95
+ differentOddEven: false,
96
+ oddHeader: null,
97
+ oddFooter: null,
98
+ evenHeader: null,
99
+ evenFooter: null,
100
+ firstHeader: null,
101
+ firstFooter: null
102
+ }, options.headerFooter);
103
+ this.dataValidations = new DataValidations();
104
+
105
+ // for freezepanes, split, zoom, gridlines, etc
106
+ this.views = options.views || [];
107
+ this.autoFilter = options.autoFilter || null;
108
+
109
+ // for images, etc
110
+ this._media = [];
111
+
112
+ // worksheet protection
113
+ this.sheetProtection = null;
114
+
115
+ // for tables
116
+ this.tables = {};
117
+ this.conditionalFormattings = [];
118
+ }
119
+ get name() {
120
+ return this._name;
121
+ }
122
+ set name(name) {
123
+ if (name === undefined) {
124
+ name = `sheet${this.id}`;
125
+ }
126
+ if (this._name === name) return;
127
+ if (typeof name !== 'string') {
128
+ throw new Error('The name has to be a string.');
129
+ }
130
+ if (name === '') {
131
+ throw new Error('The name can\'t be empty.');
132
+ }
133
+ if (name === 'History') {
134
+ throw new Error('The name "History" is protected. Please use a different name.');
135
+ }
136
+
137
+ // Illegal character in worksheet name: asterisk (*), question mark (?),
138
+ // colon (:), forward slash (/ \), or bracket ([])
139
+ if (/[*?:/\\[\]]/.test(name)) {
140
+ throw new Error(`Worksheet name ${name} cannot include any of the following characters: * ? : \\ / [ ]`);
141
+ }
142
+ if (/(^')|('$)/.test(name)) {
143
+ throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`);
144
+ }
145
+ if (name && name.length > 31) {
146
+ // eslint-disable-next-line no-console
147
+ console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);
148
+ name = name.substring(0, 31);
149
+ }
150
+ if (this._workbook._worksheets.find(ws => ws && ws.name.toLowerCase() === name.toLowerCase())) {
151
+ throw new Error(`Worksheet name already exists: ${name}`);
152
+ }
153
+ this._name = name;
154
+ }
155
+ get workbook() {
156
+ return this._workbook;
157
+ }
158
+
159
+ // when you're done with this worksheet, call this to remove from workbook
160
+ destroy() {
161
+ this._workbook.removeWorksheetEx(this);
162
+ }
163
+
164
+ // Get the bounding range of the cells in this worksheet
165
+ get dimensions() {
166
+ const dimensions = new Range();
167
+ this._rows.forEach(row => {
168
+ if (row) {
169
+ const rowDims = row.dimensions;
170
+ if (rowDims) {
171
+ dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);
172
+ }
173
+ }
174
+ });
175
+ return dimensions;
176
+ }
177
+
178
+ // =========================================================================
179
+ // Columns
180
+
181
+ // get the current columns array.
182
+ get columns() {
183
+ return this._columns;
184
+ }
185
+
186
+ // set the columns from an array of column definitions.
187
+ // Note: any headers defined will overwrite existing values.
188
+ set columns(value) {
189
+ // calculate max header row count
190
+ this._headerRowCount = value.reduce((pv, cv) => {
191
+ const headerCount = cv.header && 1 || cv.headers && cv.headers.length || 0;
192
+ return Math.max(pv, headerCount);
193
+ }, 0);
194
+
195
+ // construct Column objects
196
+ let count = 1;
197
+ const columns = this._columns = [];
198
+ value.forEach(defn => {
199
+ const column = new Column(this, count++, false);
200
+ columns.push(column);
201
+ column.defn = defn;
202
+ });
203
+ }
204
+ getColumnKey(key) {
205
+ return this._keys[key];
206
+ }
207
+ setColumnKey(key, value) {
208
+ this._keys[key] = value;
209
+ }
210
+ deleteColumnKey(key) {
211
+ delete this._keys[key];
212
+ }
213
+ eachColumnKey(f) {
214
+ _.each(this._keys, f);
215
+ }
216
+
217
+ // get a single column by col number. If it doesn't exist, create it and any gaps before it
218
+ getColumn(c) {
219
+ if (typeof c === 'string') {
220
+ // if it matches a key'd column, return that
221
+ const col = this._keys[c];
222
+ if (col) return col;
223
+
224
+ // otherwise, assume letter
225
+ c = colCache.l2n(c);
226
+ }
227
+ if (!this._columns) {
228
+ this._columns = [];
229
+ }
230
+ if (c > this._columns.length) {
231
+ let n = this._columns.length + 1;
232
+ while (n <= c) {
233
+ this._columns.push(new Column(this, n++));
234
+ }
235
+ }
236
+ return this._columns[c - 1];
237
+ }
238
+ spliceColumns(start, count) {
239
+ const rows = this._rows;
240
+ const nRows = rows.length;
241
+ for (var _len = arguments.length, inserts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
242
+ inserts[_key - 2] = arguments[_key];
243
+ }
244
+ if (inserts.length > 0) {
245
+ // must iterate over all rows whether they exist yet or not
246
+ for (let i = 0; i < nRows; i++) {
247
+ const rowArguments = [start, count];
248
+ // eslint-disable-next-line no-loop-func
249
+ inserts.forEach(insert => {
250
+ rowArguments.push(insert[i] || null);
251
+ });
252
+ const row = this.getRow(i + 1);
253
+ // eslint-disable-next-line prefer-spread
254
+ row.splice.apply(row, rowArguments);
255
+ }
256
+ } else {
257
+ // nothing to insert, so just splice all rows
258
+ this._rows.forEach(r => {
259
+ if (r) {
260
+ r.splice(start, count);
261
+ }
262
+ });
263
+ }
264
+
265
+ // splice column definitions
266
+ const nExpand = inserts.length - count;
267
+ const nKeep = start + count;
268
+ const nEnd = this._columns.length;
269
+ if (nExpand < 0) {
270
+ for (let i = start + inserts.length; i <= nEnd; i++) {
271
+ this.getColumn(i).defn = this.getColumn(i - nExpand).defn;
272
+ }
273
+ } else if (nExpand > 0) {
274
+ for (let i = nEnd; i >= nKeep; i--) {
275
+ this.getColumn(i + nExpand).defn = this.getColumn(i).defn;
276
+ }
277
+ }
278
+ for (let i = start; i < start + inserts.length; i++) {
279
+ this.getColumn(i).defn = null;
280
+ }
281
+
282
+ // account for defined names
283
+ this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);
284
+ }
285
+ get lastColumn() {
286
+ return this.getColumn(this.columnCount);
287
+ }
288
+ get columnCount() {
289
+ let maxCount = 0;
290
+ this.eachRow(row => {
291
+ maxCount = Math.max(maxCount, row.cellCount);
292
+ });
293
+ return maxCount;
294
+ }
295
+ get actualColumnCount() {
296
+ // performance nightmare - for each row, counts all the columns used
297
+ const counts = [];
298
+ let count = 0;
299
+ this.eachRow(row => {
300
+ row.eachCell(_ref => {
301
+ let {
302
+ col
303
+ } = _ref;
304
+ if (!counts[col]) {
305
+ counts[col] = true;
306
+ count++;
307
+ }
308
+ });
309
+ });
310
+ return count;
311
+ }
312
+
313
+ // =========================================================================
314
+ // Rows
315
+
316
+ _commitRow() {
317
+ // nop - allows streaming reader to fill a document
318
+ }
319
+ get _lastRowNumber() {
320
+ // need to cope with results of splice
321
+ const rows = this._rows;
322
+ let n = rows.length;
323
+ while (n > 0 && rows[n - 1] === undefined) {
324
+ n--;
325
+ }
326
+ return n;
327
+ }
328
+ get _nextRow() {
329
+ return this._lastRowNumber + 1;
330
+ }
331
+ get lastRow() {
332
+ if (this._rows.length) {
333
+ return this._rows[this._rows.length - 1];
334
+ }
335
+ return undefined;
336
+ }
337
+
338
+ // find a row (if exists) by row number
339
+ findRow(r) {
340
+ return this._rows[r - 1];
341
+ }
342
+
343
+ // find multiple rows (if exists) by row number
344
+ findRows(start, length) {
345
+ return this._rows.slice(start - 1, start - 1 + length);
346
+ }
347
+ get rowCount() {
348
+ return this._lastRowNumber;
349
+ }
350
+ get actualRowCount() {
351
+ // counts actual rows that have actual data
352
+ let count = 0;
353
+ this.eachRow(() => {
354
+ count++;
355
+ });
356
+ return count;
357
+ }
358
+
359
+ // get a row by row number.
360
+ getRow(r) {
361
+ let row = this._rows[r - 1];
362
+ if (!row) {
363
+ row = this._rows[r - 1] = new Row(this, r);
364
+ }
365
+ return row;
366
+ }
367
+
368
+ // get multiple rows by row number.
369
+ getRows(start, length) {
370
+ if (length < 1) return undefined;
371
+ const rows = [];
372
+ for (let i = start; i < start + length; i++) {
373
+ rows.push(this.getRow(i));
374
+ }
375
+ return rows;
376
+ }
377
+ addRow(value) {
378
+ let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
379
+ const rowNo = this._nextRow;
380
+ const row = this.getRow(rowNo);
381
+ row.values = value;
382
+ this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n');
383
+ return row;
384
+ }
385
+ addRows(value) {
386
+ let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
387
+ const rows = [];
388
+ value.forEach(row => {
389
+ rows.push(this.addRow(row, style));
390
+ });
391
+ return rows;
392
+ }
393
+ insertRow(pos, value) {
394
+ let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n';
395
+ this.spliceRows(pos, 0, value);
396
+ this._setStyleOption(pos, style);
397
+ return this.getRow(pos);
398
+ }
399
+ insertRows(pos, values) {
400
+ let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n';
401
+ this.spliceRows(pos, 0, ...values);
402
+ if (style !== 'n') {
403
+ // copy over the styles
404
+ for (let i = 0; i < values.length; i++) {
405
+ if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) {
406
+ this._copyStyle(values.length + pos + i, pos + i, style[1] === '+');
407
+ } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {
408
+ this._copyStyle(pos - 1, pos + i, style[1] === '+');
409
+ }
410
+ }
411
+ }
412
+ return this.getRows(pos, values.length);
413
+ }
414
+
415
+ // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')
416
+ _setStyleOption(pos) {
417
+ let style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n';
418
+ if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) {
419
+ this._copyStyle(pos + 1, pos, style[1] === '+');
420
+ } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {
421
+ this._copyStyle(pos - 1, pos, style[1] === '+');
422
+ }
423
+ }
424
+ _copyStyle(src, dest) {
425
+ let styleEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
426
+ const rSrc = this.getRow(src);
427
+ const rDst = this.getRow(dest);
428
+ rDst.style = copyStyle(rSrc.style);
429
+ // eslint-disable-next-line no-loop-func
430
+ rSrc.eachCell({
431
+ includeEmpty: styleEmpty
432
+ }, (cell, colNumber) => {
433
+ rDst.getCell(colNumber).style = copyStyle(cell.style);
434
+ });
435
+ rDst.height = rSrc.height;
436
+ }
437
+ duplicateRow(rowNum, count) {
438
+ let insert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
439
+ // create count duplicates of rowNum
440
+ // either inserting new or overwriting existing rows
441
+
442
+ const rSrc = this._rows[rowNum - 1];
443
+ const inserts = new Array(count).fill(rSrc.values);
444
+ this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);
445
+
446
+ // now copy styles...
447
+ for (let i = 0; i < count; i++) {
448
+ const rDst = this._rows[rowNum + i];
449
+ rDst.style = rSrc.style;
450
+ rDst.height = rSrc.height;
451
+ // eslint-disable-next-line no-loop-func
452
+ rSrc.eachCell({
453
+ includeEmpty: true
454
+ }, (cell, colNumber) => {
455
+ rDst.getCell(colNumber).style = cell.style;
456
+ });
457
+ }
458
+ }
459
+ spliceRows(start, count) {
460
+ // same problem as row.splice, except worse.
461
+ const nKeep = start + count;
462
+ for (var _len2 = arguments.length, inserts = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
463
+ inserts[_key2 - 2] = arguments[_key2];
464
+ }
465
+ const nInserts = inserts.length;
466
+ const nExpand = nInserts - count;
467
+ const nEnd = this._rows.length;
468
+ let i;
469
+ let rSrc;
470
+ if (nExpand < 0) {
471
+ // remove rows
472
+ if (start === nEnd) {
473
+ this._rows[nEnd - 1] = undefined;
474
+ }
475
+ for (i = nKeep; i <= nEnd; i++) {
476
+ rSrc = this._rows[i - 1];
477
+ if (rSrc) {
478
+ const rDst = this.getRow(i + nExpand);
479
+ rDst.values = rSrc.values;
480
+ rDst.style = rSrc.style;
481
+ rDst.height = rSrc.height;
482
+ // eslint-disable-next-line no-loop-func
483
+ rSrc.eachCell({
484
+ includeEmpty: true
485
+ }, (cell, colNumber) => {
486
+ rDst.getCell(colNumber).style = cell.style;
487
+ });
488
+ this._rows[i - 1] = undefined;
489
+ } else {
490
+ this._rows[i + nExpand - 1] = undefined;
491
+ }
492
+ }
493
+ } else if (nExpand > 0) {
494
+ // insert new cells
495
+ for (i = nEnd; i >= nKeep; i--) {
496
+ rSrc = this._rows[i - 1];
497
+ if (rSrc) {
498
+ const rDst = this.getRow(i + nExpand);
499
+ rDst.values = rSrc.values;
500
+ rDst.style = rSrc.style;
501
+ rDst.height = rSrc.height;
502
+ // eslint-disable-next-line no-loop-func
503
+ rSrc.eachCell({
504
+ includeEmpty: true
505
+ }, (cell, colNumber) => {
506
+ rDst.getCell(colNumber).style = cell.style;
507
+
508
+ // remerge cells accounting for insert offset
509
+ if (cell._value.constructor.name === 'MergeValue') {
510
+ const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);
511
+ const prevMaster = cell._value._master;
512
+ const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);
513
+ cellToBeMerged.merge(newMaster);
514
+ }
515
+ });
516
+ } else {
517
+ this._rows[i + nExpand - 1] = undefined;
518
+ }
519
+ }
520
+ }
521
+
522
+ // now copy over the new values
523
+ for (i = 0; i < nInserts; i++) {
524
+ const rDst = this.getRow(start + i);
525
+ rDst.style = {};
526
+ rDst.values = inserts[i];
527
+ }
528
+
529
+ // account for defined names
530
+ this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);
531
+ }
532
+
533
+ // iterate over every row in the worksheet, including maybe empty rows
534
+ eachRow(options, iteratee) {
535
+ if (!iteratee) {
536
+ iteratee = options;
537
+ options = undefined;
538
+ }
539
+ if (options && options.includeEmpty) {
540
+ const n = this._rows.length;
541
+ for (let i = 1; i <= n; i++) {
542
+ iteratee(this.getRow(i), i);
543
+ }
544
+ } else {
545
+ this._rows.forEach(row => {
546
+ if (row && row.hasValues) {
547
+ iteratee(row, row.number);
548
+ }
549
+ });
550
+ }
551
+ }
552
+
553
+ // return all rows as sparse array
554
+ getSheetValues() {
555
+ const rows = [];
556
+ this._rows.forEach(row => {
557
+ if (row) {
558
+ rows[row.number] = row.values;
559
+ }
560
+ });
561
+ return rows;
562
+ }
563
+
564
+ // =========================================================================
565
+ // Cells
566
+
567
+ // returns the cell at [r,c] or address given by r. If not found, return undefined
568
+ findCell(r, c) {
569
+ const address = colCache.getAddress(r, c);
570
+ const row = this._rows[address.row - 1];
571
+ return row ? row.findCell(address.col) : undefined;
572
+ }
573
+
574
+ // return the cell at [r,c] or address given by r. If not found, create a new one.
575
+ getCell(r, c) {
576
+ const address = colCache.getAddress(r, c);
577
+ const row = this.getRow(address.row);
578
+ return row.getCellEx(address);
579
+ }
580
+
581
+ // =========================================================================
582
+ // Merge
583
+
584
+ // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell
585
+ mergeCells() {
586
+ for (var _len3 = arguments.length, cells = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
587
+ cells[_key3] = arguments[_key3];
588
+ }
589
+ const dimensions = new Range(cells);
590
+ this._mergeCellsInternal(dimensions);
591
+ }
592
+ mergeCellsWithoutStyle() {
593
+ for (var _len4 = arguments.length, cells = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
594
+ cells[_key4] = arguments[_key4];
595
+ }
596
+ const dimensions = new Range(cells);
597
+ this._mergeCellsInternal(dimensions, true);
598
+ }
599
+ _mergeCellsInternal(dimensions, ignoreStyle) {
600
+ // check cells aren't already merged
601
+ _.each(this._merges, merge => {
602
+ if (merge.intersects(dimensions)) {
603
+ throw new Error('Cannot merge already merged cells');
604
+ }
605
+ });
606
+
607
+ // apply merge
608
+ const master = this.getCell(dimensions.top, dimensions.left);
609
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
610
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
611
+ // merge all but the master cell
612
+ if (i > dimensions.top || j > dimensions.left) {
613
+ this.getCell(i, j).merge(master, ignoreStyle);
614
+ }
615
+ }
616
+ }
617
+
618
+ // index merge
619
+ this._merges[master.address] = dimensions;
620
+ }
621
+ _unMergeMaster(master) {
622
+ // master is always top left of a rectangle
623
+ const merge = this._merges[master.address];
624
+ if (merge) {
625
+ for (let i = merge.top; i <= merge.bottom; i++) {
626
+ for (let j = merge.left; j <= merge.right; j++) {
627
+ this.getCell(i, j).unmerge();
628
+ }
629
+ }
630
+ delete this._merges[master.address];
631
+ }
632
+ }
633
+ get hasMerges() {
634
+ // return true if this._merges has a merge object
635
+ return _.some(this._merges, Boolean);
636
+ }
637
+
638
+ // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,
639
+ // un-merge the group. Note this function can affect multiple merges and merge-blocks are
640
+ // atomic - either they're all merged or all un-merged.
641
+ unMergeCells() {
642
+ for (var _len5 = arguments.length, cells = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
643
+ cells[_key5] = arguments[_key5];
644
+ }
645
+ const dimensions = new Range(cells);
646
+
647
+ // find any cells in that range and unmerge them
648
+ for (let i = dimensions.top; i <= dimensions.bottom; i++) {
649
+ for (let j = dimensions.left; j <= dimensions.right; j++) {
650
+ const cell = this.findCell(i, j);
651
+ if (cell) {
652
+ if (cell.type === Enums.ValueType.Merge) {
653
+ // this cell merges to another master
654
+ this._unMergeMaster(cell.master);
655
+ } else if (this._merges[cell.address]) {
656
+ // this cell is a master
657
+ this._unMergeMaster(cell);
658
+ }
659
+ }
660
+ }
661
+ }
662
+ }
663
+
664
+ // ===========================================================================
665
+ // Shared/Array Formula
666
+ fillFormula(range, formula, results) {
667
+ let shareType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'shared';
668
+ // Define formula for top-left cell and share to rest
669
+ const decoded = colCache.decode(range);
670
+ const {
671
+ top,
672
+ left,
673
+ bottom,
674
+ right
675
+ } = decoded;
676
+ const width = right - left + 1;
677
+ const masterAddress = colCache.encodeAddress(top, left);
678
+ const isShared = shareType === 'shared';
679
+
680
+ // work out result accessor
681
+ let getResult;
682
+ if (typeof results === 'function') {
683
+ getResult = results;
684
+ } else if (Array.isArray(results)) {
685
+ if (Array.isArray(results[0])) {
686
+ getResult = (row, col) => results[row - top][col - left];
687
+ } else {
688
+ // eslint-disable-next-line no-mixed-operators
689
+ getResult = (row, col) => results[(row - top) * width + (col - left)];
690
+ }
691
+ } else {
692
+ getResult = () => undefined;
693
+ }
694
+ let first = true;
695
+ for (let r = top; r <= bottom; r++) {
696
+ for (let c = left; c <= right; c++) {
697
+ if (first) {
698
+ this.getCell(r, c).value = {
699
+ shareType,
700
+ formula,
701
+ ref: range,
702
+ result: getResult(r, c)
703
+ };
704
+ first = false;
705
+ } else {
706
+ this.getCell(r, c).value = isShared ? {
707
+ sharedFormula: masterAddress,
708
+ result: getResult(r, c)
709
+ } : getResult(r, c);
710
+ }
711
+ }
712
+ }
713
+ }
714
+
715
+ // =========================================================================
716
+ // Images
717
+ addImage(imageId, range) {
718
+ const model = {
719
+ type: 'image',
720
+ imageId,
721
+ range
722
+ };
723
+ this._media.push(new Image(this, model));
724
+ }
725
+ getImages() {
726
+ return this._media.filter(m => m.type === 'image');
727
+ }
728
+ addBackgroundImage(imageId) {
729
+ const model = {
730
+ type: 'background',
731
+ imageId
732
+ };
733
+ this._media.push(new Image(this, model));
734
+ }
735
+ getBackgroundImageId() {
736
+ const image = this._media.find(m => m.type === 'background');
737
+ return image && image.imageId;
738
+ }
739
+
740
+ // =========================================================================
741
+ // Worksheet Protection
742
+ protect(password, options) {
743
+ // TODO: make this function truly async
744
+ // perhaps marshal to worker thread or something
745
+ return new Promise(resolve => {
746
+ this.sheetProtection = {
747
+ sheet: true
748
+ };
749
+ if (options && 'spinCount' in options) {
750
+ // force spinCount to be integer >= 0
751
+ options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;
752
+ }
753
+ if (password) {
754
+ this.sheetProtection.algorithmName = 'SHA-512';
755
+ this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');
756
+ this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount
757
+ this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(password, 'SHA512', this.sheetProtection.saltValue, this.sheetProtection.spinCount);
758
+ }
759
+ if (options) {
760
+ this.sheetProtection = Object.assign(this.sheetProtection, options);
761
+ if (!password && 'spinCount' in options) {
762
+ delete this.sheetProtection.spinCount;
763
+ }
764
+ }
765
+ resolve();
766
+ });
767
+ }
768
+ unprotect() {
769
+ this.sheetProtection = null;
770
+ }
771
+
772
+ // =========================================================================
773
+ // Tables
774
+ addTable(model) {
775
+ const table = new Table(this, model);
776
+ this.tables[model.name] = table;
777
+ return table;
778
+ }
779
+ getTable(name) {
780
+ return this.tables[name];
781
+ }
782
+ removeTable(name) {
783
+ delete this.tables[name];
784
+ }
785
+ getTables() {
786
+ return Object.values(this.tables);
787
+ }
788
+
789
+ // ===========================================================================
790
+ // Conditional Formatting
791
+ addConditionalFormatting(cf) {
792
+ this.conditionalFormattings.push(cf);
793
+ }
794
+ removeConditionalFormatting(filter) {
795
+ if (typeof filter === 'number') {
796
+ this.conditionalFormattings.splice(filter, 1);
797
+ } else if (filter instanceof Function) {
798
+ this.conditionalFormattings = this.conditionalFormattings.filter(filter);
799
+ } else {
800
+ this.conditionalFormattings = [];
801
+ }
802
+ }
803
+
804
+ // ===========================================================================
805
+ // Deprecated
806
+ get tabColor() {
807
+ // eslint-disable-next-line no-console
808
+ console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');
809
+ return this.properties.tabColor;
810
+ }
811
+ set tabColor(value) {
812
+ // eslint-disable-next-line no-console
813
+ console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');
814
+ this.properties.tabColor = value;
815
+ }
816
+
817
+ // ===========================================================================
818
+ // Model
819
+
820
+ get model() {
821
+ const model = {
822
+ id: this.id,
823
+ name: this.name,
824
+ dataValidations: this.dataValidations.model,
825
+ properties: this.properties,
826
+ state: this.state,
827
+ pageSetup: this.pageSetup,
828
+ headerFooter: this.headerFooter,
829
+ rowBreaks: this.rowBreaks,
830
+ views: this.views,
831
+ autoFilter: this.autoFilter,
832
+ media: this._media.map(medium => medium.model),
833
+ sheetProtection: this.sheetProtection,
834
+ tables: Object.values(this.tables).map(table => table.model),
835
+ conditionalFormattings: this.conditionalFormattings
836
+ };
837
+
838
+ // =================================================
839
+ // columns
840
+ model.cols = Column.toModel(this.columns);
841
+
842
+ // ==========================================================
843
+ // Rows
844
+ const rows = model.rows = [];
845
+ const dimensions = model.dimensions = new Range();
846
+ this._rows.forEach(row => {
847
+ const rowModel = row && row.model;
848
+ if (rowModel) {
849
+ dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);
850
+ rows.push(rowModel);
851
+ }
852
+ });
853
+
854
+ // ==========================================================
855
+ // Merges
856
+ model.merges = [];
857
+ _.each(this._merges, merge => {
858
+ model.merges.push(merge.range);
859
+ });
860
+ return model;
861
+ }
862
+ _parseRows(model) {
863
+ this._rows = [];
864
+ model.rows.forEach(rowModel => {
865
+ const row = new Row(this, rowModel.number);
866
+ this._rows[row.number - 1] = row;
867
+ row.model = rowModel;
868
+ });
869
+ }
870
+ _parseMergeCells(model) {
871
+ _.each(model.mergeCells, merge => {
872
+ // Do not merge styles when importing an Excel file
873
+ // since each cell may have different styles intentionally.
874
+ this.mergeCellsWithoutStyle(merge);
875
+ });
876
+ }
877
+ set model(value) {
878
+ this.name = value.name;
879
+ this._columns = Column.fromModel(this, value.cols);
880
+ this._parseRows(value);
881
+ this._parseMergeCells(value);
882
+ this.dataValidations = new DataValidations(value.dataValidations);
883
+ this.properties = value.properties;
884
+ this.pageSetup = value.pageSetup;
885
+ this.headerFooter = value.headerFooter;
886
+ this.views = value.views;
887
+ this.autoFilter = value.autoFilter;
888
+ this._media = value.media.map(medium => new Image(this, medium));
889
+ this.sheetProtection = value.sheetProtection;
890
+ this.tables = value.tables.reduce((tables, table) => {
891
+ const t = new Table();
892
+ t.model = table;
893
+ tables[table.name] = t;
894
+ return tables;
895
+ }, {});
896
+ this.conditionalFormattings = value.conditionalFormattings;
897
+ }
898
+ }
899
+ module.exports = Worksheet;
900
+ //# sourceMappingURL=worksheet.js.map