@yuanliwei/exceljs 4.4.0 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/dist/LICENSE +22 -0
  2. package/dist/es5/csv/csv.js +176 -0
  3. package/dist/es5/csv/csv.js.map +1 -0
  4. package/dist/es5/csv/line-buffer.js +67 -0
  5. package/dist/es5/csv/line-buffer.js.map +1 -0
  6. package/dist/es5/csv/stream-converter.js +110 -0
  7. package/dist/es5/csv/stream-converter.js.map +1 -0
  8. package/dist/es5/doc/anchor.js +73 -0
  9. package/dist/es5/doc/anchor.js.map +1 -0
  10. package/dist/es5/doc/cell.js +951 -0
  11. package/dist/es5/doc/cell.js.map +1 -0
  12. package/dist/es5/doc/column.js +274 -0
  13. package/dist/es5/doc/column.js.map +1 -0
  14. package/dist/es5/doc/data-validations.js +18 -0
  15. package/dist/es5/doc/data-validations.js.map +1 -0
  16. package/dist/es5/doc/defined-names.js +171 -0
  17. package/dist/es5/doc/defined-names.js.map +1 -0
  18. package/dist/es5/doc/enums.js +49 -0
  19. package/dist/es5/doc/enums.js.map +1 -0
  20. package/dist/es5/doc/image.js +67 -0
  21. package/dist/es5/doc/image.js.map +1 -0
  22. package/dist/es5/doc/modelcontainer.js +16 -0
  23. package/dist/es5/doc/modelcontainer.js.map +1 -0
  24. package/dist/es5/doc/note.js +60 -0
  25. package/dist/es5/doc/note.js.map +1 -0
  26. package/dist/es5/doc/pivot-table.js +132 -0
  27. package/dist/es5/doc/pivot-table.js.map +1 -0
  28. package/dist/es5/doc/range.js +225 -0
  29. package/dist/es5/doc/range.js.map +1 -0
  30. package/dist/es5/doc/row.js +381 -0
  31. package/dist/es5/doc/row.js.map +1 -0
  32. package/dist/es5/doc/table.js +428 -0
  33. package/dist/es5/doc/table.js.map +1 -0
  34. package/dist/es5/doc/workbook.js +203 -0
  35. package/dist/es5/doc/workbook.js.map +1 -0
  36. package/dist/es5/doc/worksheet.js +911 -0
  37. package/dist/es5/doc/worksheet.js.map +1 -0
  38. package/dist/es5/exceljs.bare.js +14 -0
  39. package/dist/es5/exceljs.bare.js.map +1 -0
  40. package/dist/es5/exceljs.browser.js +36 -0
  41. package/dist/es5/exceljs.browser.js.map +1 -0
  42. package/dist/es5/exceljs.nodejs.js +15 -0
  43. package/dist/es5/exceljs.nodejs.js.map +1 -0
  44. package/dist/es5/index.js +15 -0
  45. package/dist/es5/stream/xlsx/hyperlink-reader.js +107 -0
  46. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -0
  47. package/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
  48. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -0
  49. package/dist/es5/stream/xlsx/sheet-rels-writer.js +93 -0
  50. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -0
  51. package/dist/es5/stream/xlsx/workbook-reader.js +461 -0
  52. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -0
  53. package/dist/es5/stream/xlsx/workbook-writer.js +345 -0
  54. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -0
  55. package/dist/es5/stream/xlsx/worksheet-reader.js +459 -0
  56. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -0
  57. package/dist/es5/stream/xlsx/worksheet-writer.js +654 -0
  58. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -0
  59. package/dist/es5/utils/auto-drain.js +17 -0
  60. package/dist/es5/utils/auto-drain.js.map +1 -0
  61. package/dist/es5/utils/browser-buffer-decode.js +15 -0
  62. package/dist/es5/utils/browser-buffer-decode.js.map +1 -0
  63. package/dist/es5/utils/browser-buffer-encode.js +17 -0
  64. package/dist/es5/utils/browser-buffer-encode.js.map +1 -0
  65. package/dist/es5/utils/cell-matrix.js +145 -0
  66. package/dist/es5/utils/cell-matrix.js.map +1 -0
  67. package/dist/es5/utils/col-cache.js +274 -0
  68. package/dist/es5/utils/col-cache.js.map +1 -0
  69. package/dist/es5/utils/copy-style.js +41 -0
  70. package/dist/es5/utils/copy-style.js.map +1 -0
  71. package/dist/es5/utils/encryptor.js +58 -0
  72. package/dist/es5/utils/encryptor.js.map +1 -0
  73. package/dist/es5/utils/iterate-stream.js +57 -0
  74. package/dist/es5/utils/iterate-stream.js.map +1 -0
  75. package/dist/es5/utils/parse-sax.js +77 -0
  76. package/dist/es5/utils/parse-sax.js.map +1 -0
  77. package/dist/es5/utils/shared-formula.js +42 -0
  78. package/dist/es5/utils/shared-formula.js.map +1 -0
  79. package/dist/es5/utils/shared-strings.js +32 -0
  80. package/dist/es5/utils/shared-strings.js.map +1 -0
  81. package/dist/es5/utils/stream-base64.js +66 -0
  82. package/dist/es5/utils/stream-base64.js.map +1 -0
  83. package/dist/es5/utils/stream-buf.js +343 -0
  84. package/dist/es5/utils/stream-buf.js.map +1 -0
  85. package/dist/es5/utils/string-buf.js +73 -0
  86. package/dist/es5/utils/string-buf.js.map +1 -0
  87. package/dist/es5/utils/string-builder.js +32 -0
  88. package/dist/es5/utils/string-builder.js.map +1 -0
  89. package/dist/es5/utils/stuttered-pipe.js +61 -0
  90. package/dist/es5/utils/stuttered-pipe.js.map +1 -0
  91. package/dist/es5/utils/typed-stack.js +23 -0
  92. package/dist/es5/utils/typed-stack.js.map +1 -0
  93. package/dist/es5/utils/under-dash.js +164 -0
  94. package/dist/es5/utils/under-dash.js.map +1 -0
  95. package/dist/es5/utils/utils.js +204 -0
  96. package/dist/es5/utils/utils.js.map +1 -0
  97. package/dist/es5/utils/xml-stream.js +151 -0
  98. package/dist/es5/utils/xml-stream.js.map +1 -0
  99. package/dist/es5/utils/zip-stream.js +78 -0
  100. package/dist/es5/utils/zip-stream.js.map +1 -0
  101. package/dist/es5/xlsx/defaultnumformats.js +230 -0
  102. package/dist/es5/xlsx/defaultnumformats.js.map +1 -0
  103. package/dist/es5/xlsx/rel-type.js +21 -0
  104. package/dist/es5/xlsx/rel-type.js.map +1 -0
  105. package/dist/es5/xlsx/xform/base-xform.js +161 -0
  106. package/dist/es5/xlsx/xform/base-xform.js.map +1 -0
  107. package/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
  108. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -0
  109. package/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
  110. package/dist/es5/xlsx/xform/book/sheet-xform.js.map +1 -0
  111. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
  112. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +1 -0
  113. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
  114. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +1 -0
  115. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
  116. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +1 -0
  117. package/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
  118. package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +1 -0
  119. package/dist/es5/xlsx/xform/book/workbook-xform.js +241 -0
  120. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -0
  121. package/dist/es5/xlsx/xform/comment/comment-xform.js +107 -0
  122. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -0
  123. package/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
  124. package/dist/es5/xlsx/xform/comment/comments-xform.js.map +1 -0
  125. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
  126. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +1 -0
  127. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
  128. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +1 -0
  129. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
  130. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +1 -0
  131. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +96 -0
  132. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +1 -0
  133. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +107 -0
  134. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +1 -0
  135. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +92 -0
  136. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -0
  137. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +60 -0
  138. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -0
  139. package/dist/es5/xlsx/xform/composite-xform.js +51 -0
  140. package/dist/es5/xlsx/xform/composite-xform.js.map +1 -0
  141. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
  142. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +1 -0
  143. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
  144. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +1 -0
  145. package/dist/es5/xlsx/xform/core/app-xform.js +93 -0
  146. package/dist/es5/xlsx/xform/core/app-xform.js.map +1 -0
  147. package/dist/es5/xlsx/xform/core/content-types-xform.js +125 -0
  148. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -0
  149. package/dist/es5/xlsx/xform/core/core-xform.js +158 -0
  150. package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -0
  151. package/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
  152. package/dist/es5/xlsx/xform/core/relationship-xform.js.map +1 -0
  153. package/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
  154. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -0
  155. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
  156. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +1 -0
  157. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
  158. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +1 -0
  159. package/dist/es5/xlsx/xform/drawing/blip-xform.js +39 -0
  160. package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +1 -0
  161. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
  162. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +1 -0
  163. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
  164. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -0
  165. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
  166. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +1 -0
  167. package/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
  168. package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +1 -0
  169. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
  170. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +1 -0
  171. package/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
  172. package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +1 -0
  173. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
  174. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +1 -0
  175. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
  176. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +1 -0
  177. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  178. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +1 -0
  179. package/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
  180. package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +1 -0
  181. package/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
  182. package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +1 -0
  183. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  184. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +1 -0
  185. package/dist/es5/xlsx/xform/list-xform.js +85 -0
  186. package/dist/es5/xlsx/xform/list-xform.js.map +1 -0
  187. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +40 -0
  188. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -0
  189. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +75 -0
  190. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -0
  191. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +104 -0
  192. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -0
  193. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +114 -0
  194. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -0
  195. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
  196. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -0
  197. package/dist/es5/xlsx/xform/sheet/cell-xform.js +452 -0
  198. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -0
  199. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +271 -0
  200. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -0
  201. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
  202. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +1 -0
  203. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
  204. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +1 -0
  205. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +43 -0
  206. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +1 -0
  207. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
  208. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +1 -0
  209. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +42 -0
  210. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +1 -0
  211. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
  212. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +1 -0
  213. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
  214. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +1 -0
  215. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +41 -0
  216. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +1 -0
  217. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +26 -0
  218. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +1 -0
  219. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +85 -0
  220. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -0
  221. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
  222. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +1 -0
  223. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
  224. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +1 -0
  225. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
  226. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +1 -0
  227. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +81 -0
  228. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +1 -0
  229. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
  230. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +1 -0
  231. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +72 -0
  232. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +1 -0
  233. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
  234. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +1 -0
  235. package/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
  236. package/dist/es5/xlsx/xform/sheet/col-xform.js.map +1 -0
  237. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +249 -0
  238. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -0
  239. package/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
  240. package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +1 -0
  241. package/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
  242. package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +1 -0
  243. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
  244. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +1 -0
  245. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
  246. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +1 -0
  247. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
  248. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +1 -0
  249. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
  250. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +1 -0
  251. package/dist/es5/xlsx/xform/sheet/merges.js +52 -0
  252. package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -0
  253. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
  254. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +1 -0
  255. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
  256. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +1 -0
  257. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
  258. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +1 -0
  259. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
  260. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +1 -0
  261. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
  262. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +1 -0
  263. package/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
  264. package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +1 -0
  265. package/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
  266. package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +1 -0
  267. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +35 -0
  268. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +1 -0
  269. package/dist/es5/xlsx/xform/sheet/row-xform.js +128 -0
  270. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -0
  271. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +51 -0
  272. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +1 -0
  273. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
  274. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +1 -0
  275. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
  276. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +1 -0
  277. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
  278. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +1 -0
  279. package/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
  280. package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +1 -0
  281. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +515 -0
  282. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -0
  283. package/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
  284. package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +1 -0
  285. package/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
  286. package/dist/es5/xlsx/xform/simple/date-xform.js.map +1 -0
  287. package/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
  288. package/dist/es5/xlsx/xform/simple/float-xform.js.map +1 -0
  289. package/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
  290. package/dist/es5/xlsx/xform/simple/integer-xform.js.map +1 -0
  291. package/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
  292. package/dist/es5/xlsx/xform/simple/string-xform.js.map +1 -0
  293. package/dist/es5/xlsx/xform/static-xform.js +61 -0
  294. package/dist/es5/xlsx/xform/static-xform.js.map +1 -0
  295. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +94 -0
  296. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +1 -0
  297. package/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
  298. package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +1 -0
  299. package/dist/es5/xlsx/xform/strings/shared-string-xform.js +100 -0
  300. package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +1 -0
  301. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +114 -0
  302. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -0
  303. package/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
  304. package/dist/es5/xlsx/xform/strings/text-xform.js.map +1 -0
  305. package/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
  306. package/dist/es5/xlsx/xform/style/alignment-xform.js.map +1 -0
  307. package/dist/es5/xlsx/xform/style/border-xform.js +185 -0
  308. package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -0
  309. package/dist/es5/xlsx/xform/style/color-xform.js +66 -0
  310. package/dist/es5/xlsx/xform/style/color-xform.js.map +1 -0
  311. package/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
  312. package/dist/es5/xlsx/xform/style/dxf-xform.js.map +1 -0
  313. package/dist/es5/xlsx/xform/style/fill-xform.js +307 -0
  314. package/dist/es5/xlsx/xform/style/fill-xform.js.map +1 -0
  315. package/dist/es5/xlsx/xform/style/font-xform.js +173 -0
  316. package/dist/es5/xlsx/xform/style/font-xform.js.map +1 -0
  317. package/dist/es5/xlsx/xform/style/numfmt-xform.js +58 -0
  318. package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +1 -0
  319. package/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
  320. package/dist/es5/xlsx/xform/style/protection-xform.js.map +1 -0
  321. package/dist/es5/xlsx/xform/style/style-xform.js +118 -0
  322. package/dist/es5/xlsx/xform/style/style-xform.js.map +1 -0
  323. package/dist/es5/xlsx/xform/style/styles-xform.js +611 -0
  324. package/dist/es5/xlsx/xform/style/styles-xform.js.map +1 -0
  325. package/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
  326. package/dist/es5/xlsx/xform/style/underline-xform.js.map +1 -0
  327. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
  328. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -0
  329. package/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
  330. package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +1 -0
  331. package/dist/es5/xlsx/xform/table/filter-column-xform.js +87 -0
  332. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -0
  333. package/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
  334. package/dist/es5/xlsx/xform/table/filter-xform.js.map +1 -0
  335. package/dist/es5/xlsx/xform/table/table-column-xform.js +40 -0
  336. package/dist/es5/xlsx/xform/table/table-column-xform.js.map +1 -0
  337. package/dist/es5/xlsx/xform/table/table-style-info-xform.js +38 -0
  338. package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +1 -0
  339. package/dist/es5/xlsx/xform/table/table-xform.js +124 -0
  340. package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -0
  341. package/dist/es5/xlsx/xlsx.js +788 -0
  342. package/dist/es5/xlsx/xlsx.js.map +1 -0
  343. package/dist/es5/xlsx/xml/theme1.js +5 -0
  344. package/dist/es5/xlsx/xml/theme1.js.map +1 -0
  345. package/dist/exceljs.bare.js +60711 -0
  346. package/dist/exceljs.bare.js.map +883 -0
  347. package/dist/exceljs.bare.min.js +45 -0
  348. package/dist/exceljs.bare.min.js.map +1 -0
  349. package/dist/exceljs.js +65487 -0
  350. package/dist/exceljs.js.map +1207 -0
  351. package/dist/exceljs.min.js +45 -0
  352. package/dist/exceljs.min.js.map +1 -0
  353. package/lib/xlsx/xform/strings/shared-string-xform.js +4 -1
  354. package/package.json +1 -1
@@ -0,0 +1,951 @@
1
+ "use strict";
2
+
3
+ /* eslint-disable max-classes-per-file */
4
+ const colCache = require('../utils/col-cache');
5
+ const _ = require('../utils/under-dash');
6
+ const Enums = require('./enums');
7
+ const _require = require('../utils/shared-formula'),
8
+ slideFormula = _require.slideFormula;
9
+ const Note = require('./note');
10
+ // Cell requirements
11
+ // Operate inside a worksheet
12
+ // Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.
13
+ // Manage/use and manipulate cell format either as local to cell or inherited from column or row.
14
+
15
+ class Cell {
16
+ constructor(row, column, address) {
17
+ if (!row || !column) {
18
+ throw new Error('A Cell needs a Row');
19
+ }
20
+ this._row = row;
21
+ this._column = column;
22
+ colCache.validateAddress(address);
23
+ this._address = address;
24
+
25
+ // TODO: lazy evaluation of this._value
26
+ this._value = Value.create(Cell.Types.Null, this);
27
+ this.style = this._mergeStyle(row.style, column.style, {});
28
+ this._mergeCount = 0;
29
+ }
30
+ get worksheet() {
31
+ return this._row.worksheet;
32
+ }
33
+ get workbook() {
34
+ return this._row.worksheet.workbook;
35
+ }
36
+
37
+ // help GC by removing cyclic (and other) references
38
+ destroy() {
39
+ delete this.style;
40
+ delete this._value;
41
+ delete this._row;
42
+ delete this._column;
43
+ delete this._address;
44
+ }
45
+
46
+ // =========================================================================
47
+ // Styles stuff
48
+ get numFmt() {
49
+ return this.style.numFmt;
50
+ }
51
+ set numFmt(value) {
52
+ this.style.numFmt = value;
53
+ }
54
+ get font() {
55
+ return this.style.font;
56
+ }
57
+ set font(value) {
58
+ this.style.font = value;
59
+ }
60
+ get alignment() {
61
+ return this.style.alignment;
62
+ }
63
+ set alignment(value) {
64
+ this.style.alignment = value;
65
+ }
66
+ get border() {
67
+ return this.style.border;
68
+ }
69
+ set border(value) {
70
+ this.style.border = value;
71
+ }
72
+ get fill() {
73
+ return this.style.fill;
74
+ }
75
+ set fill(value) {
76
+ this.style.fill = value;
77
+ }
78
+ get protection() {
79
+ return this.style.protection;
80
+ }
81
+ set protection(value) {
82
+ this.style.protection = value;
83
+ }
84
+ _mergeStyle(rowStyle, colStyle, style) {
85
+ const numFmt = rowStyle && rowStyle.numFmt || colStyle && colStyle.numFmt;
86
+ if (numFmt) style.numFmt = numFmt;
87
+ const font = rowStyle && rowStyle.font || colStyle && colStyle.font;
88
+ if (font) style.font = font;
89
+ const alignment = rowStyle && rowStyle.alignment || colStyle && colStyle.alignment;
90
+ if (alignment) style.alignment = alignment;
91
+ const border = rowStyle && rowStyle.border || colStyle && colStyle.border;
92
+ if (border) style.border = border;
93
+ const fill = rowStyle && rowStyle.fill || colStyle && colStyle.fill;
94
+ if (fill) style.fill = fill;
95
+ const protection = rowStyle && rowStyle.protection || colStyle && colStyle.protection;
96
+ if (protection) style.protection = protection;
97
+ return style;
98
+ }
99
+
100
+ // =========================================================================
101
+ // return the address for this cell
102
+ get address() {
103
+ return this._address;
104
+ }
105
+ get row() {
106
+ return this._row.number;
107
+ }
108
+ get col() {
109
+ return this._column.number;
110
+ }
111
+ get $col$row() {
112
+ return "$".concat(this._column.letter, "$").concat(this.row);
113
+ }
114
+
115
+ // =========================================================================
116
+ // Value stuff
117
+
118
+ get type() {
119
+ return this._value.type;
120
+ }
121
+ get effectiveType() {
122
+ return this._value.effectiveType;
123
+ }
124
+ toCsvString() {
125
+ return this._value.toCsvString();
126
+ }
127
+
128
+ // =========================================================================
129
+ // Merge stuff
130
+
131
+ addMergeRef() {
132
+ this._mergeCount++;
133
+ }
134
+ releaseMergeRef() {
135
+ this._mergeCount--;
136
+ }
137
+ get isMerged() {
138
+ return this._mergeCount > 0 || this.type === Cell.Types.Merge;
139
+ }
140
+ merge(master, ignoreStyle) {
141
+ this._value.release();
142
+ this._value = Value.create(Cell.Types.Merge, this, master);
143
+ if (!ignoreStyle) {
144
+ this.style = master.style;
145
+ }
146
+ }
147
+ unmerge() {
148
+ if (this.type === Cell.Types.Merge) {
149
+ this._value.release();
150
+ this._value = Value.create(Cell.Types.Null, this);
151
+ this.style = this._mergeStyle(this._row.style, this._column.style, {});
152
+ }
153
+ }
154
+ isMergedTo(master) {
155
+ if (this._value.type !== Cell.Types.Merge) return false;
156
+ return this._value.isMergedTo(master);
157
+ }
158
+ get master() {
159
+ if (this.type === Cell.Types.Merge) {
160
+ return this._value.master;
161
+ }
162
+ return this; // an unmerged cell is its own master
163
+ }
164
+ get isHyperlink() {
165
+ return this._value.type === Cell.Types.Hyperlink;
166
+ }
167
+ get hyperlink() {
168
+ return this._value.hyperlink;
169
+ }
170
+
171
+ // return the value
172
+ get value() {
173
+ return this._value.value;
174
+ }
175
+
176
+ // set the value - can be number, string or raw
177
+ set value(v) {
178
+ // special case - merge cells set their master's value
179
+ if (this.type === Cell.Types.Merge) {
180
+ this._value.master.value = v;
181
+ return;
182
+ }
183
+ this._value.release();
184
+
185
+ // assign value
186
+ this._value = Value.create(Value.getType(v), this, v);
187
+ }
188
+ get note() {
189
+ return this._comment && this._comment.note;
190
+ }
191
+ set note(note) {
192
+ this._comment = new Note(note);
193
+ }
194
+ get text() {
195
+ return this._value.toString();
196
+ }
197
+ get html() {
198
+ return _.escapeHtml(this.text);
199
+ }
200
+ toString() {
201
+ return this.text;
202
+ }
203
+ _upgradeToHyperlink(hyperlink) {
204
+ // if this cell is a string, turn it into a Hyperlink
205
+ if (this.type === Cell.Types.String) {
206
+ this._value = Value.create(Cell.Types.Hyperlink, this, {
207
+ text: this._value.value,
208
+ hyperlink
209
+ });
210
+ }
211
+ }
212
+
213
+ // =========================================================================
214
+ // Formula stuff
215
+ get formula() {
216
+ return this._value.formula;
217
+ }
218
+ get result() {
219
+ return this._value.result;
220
+ }
221
+ get formulaType() {
222
+ return this._value.formulaType;
223
+ }
224
+
225
+ // =========================================================================
226
+ // Name stuff
227
+ get fullAddress() {
228
+ const worksheet = this._row.worksheet;
229
+ return {
230
+ sheetName: worksheet.name,
231
+ address: this.address,
232
+ row: this.row,
233
+ col: this.col
234
+ };
235
+ }
236
+ get name() {
237
+ return this.names[0];
238
+ }
239
+ set name(value) {
240
+ this.names = [value];
241
+ }
242
+ get names() {
243
+ return this.workbook.definedNames.getNamesEx(this.fullAddress);
244
+ }
245
+ set names(value) {
246
+ const definedNames = this.workbook.definedNames;
247
+ definedNames.removeAllNames(this.fullAddress);
248
+ value.forEach(name => {
249
+ definedNames.addEx(this.fullAddress, name);
250
+ });
251
+ }
252
+ addName(name) {
253
+ this.workbook.definedNames.addEx(this.fullAddress, name);
254
+ }
255
+ removeName(name) {
256
+ this.workbook.definedNames.removeEx(this.fullAddress, name);
257
+ }
258
+ removeAllNames() {
259
+ this.workbook.definedNames.removeAllNames(this.fullAddress);
260
+ }
261
+
262
+ // =========================================================================
263
+ // Data Validation stuff
264
+ get _dataValidations() {
265
+ return this.worksheet.dataValidations;
266
+ }
267
+ get dataValidation() {
268
+ return this._dataValidations.find(this.address);
269
+ }
270
+ set dataValidation(value) {
271
+ this._dataValidations.add(this.address, value);
272
+ }
273
+
274
+ // =========================================================================
275
+ // Model stuff
276
+
277
+ get model() {
278
+ const model = this._value.model;
279
+ model.style = this.style;
280
+ if (this._comment) {
281
+ model.comment = this._comment.model;
282
+ }
283
+ return model;
284
+ }
285
+ set model(value) {
286
+ this._value.release();
287
+ this._value = Value.create(value.type, this);
288
+ this._value.model = value;
289
+ if (value.comment) {
290
+ switch (value.comment.type) {
291
+ case 'note':
292
+ this._comment = Note.fromModel(value.comment);
293
+ break;
294
+ }
295
+ }
296
+ if (value.style) {
297
+ this.style = value.style;
298
+ } else {
299
+ this.style = {};
300
+ }
301
+ }
302
+ }
303
+ Cell.Types = Enums.ValueType;
304
+
305
+ // =============================================================================
306
+ // Internal Value Types
307
+
308
+ class NullValue {
309
+ constructor(cell) {
310
+ this.model = {
311
+ address: cell.address,
312
+ type: Cell.Types.Null
313
+ };
314
+ }
315
+ get value() {
316
+ return null;
317
+ }
318
+ set value(value) {
319
+ // nothing to do
320
+ }
321
+ get type() {
322
+ return Cell.Types.Null;
323
+ }
324
+ get effectiveType() {
325
+ return Cell.Types.Null;
326
+ }
327
+ get address() {
328
+ return this.model.address;
329
+ }
330
+ set address(value) {
331
+ this.model.address = value;
332
+ }
333
+ toCsvString() {
334
+ return '';
335
+ }
336
+ release() {}
337
+ toString() {
338
+ return '';
339
+ }
340
+ }
341
+ class NumberValue {
342
+ constructor(cell, value) {
343
+ this.model = {
344
+ address: cell.address,
345
+ type: Cell.Types.Number,
346
+ value
347
+ };
348
+ }
349
+ get value() {
350
+ return this.model.value;
351
+ }
352
+ set value(value) {
353
+ this.model.value = value;
354
+ }
355
+ get type() {
356
+ return Cell.Types.Number;
357
+ }
358
+ get effectiveType() {
359
+ return Cell.Types.Number;
360
+ }
361
+ get address() {
362
+ return this.model.address;
363
+ }
364
+ set address(value) {
365
+ this.model.address = value;
366
+ }
367
+ toCsvString() {
368
+ return this.model.value.toString();
369
+ }
370
+ release() {}
371
+ toString() {
372
+ return this.model.value.toString();
373
+ }
374
+ }
375
+ class StringValue {
376
+ constructor(cell, value) {
377
+ this.model = {
378
+ address: cell.address,
379
+ type: Cell.Types.String,
380
+ value
381
+ };
382
+ }
383
+ get value() {
384
+ return this.model.value;
385
+ }
386
+ set value(value) {
387
+ this.model.value = value;
388
+ }
389
+ get type() {
390
+ return Cell.Types.String;
391
+ }
392
+ get effectiveType() {
393
+ return Cell.Types.String;
394
+ }
395
+ get address() {
396
+ return this.model.address;
397
+ }
398
+ set address(value) {
399
+ this.model.address = value;
400
+ }
401
+ toCsvString() {
402
+ return "\"".concat(this.model.value.replace(/"/g, '""'), "\"");
403
+ }
404
+ release() {}
405
+ toString() {
406
+ return this.model.value;
407
+ }
408
+ }
409
+ class RichTextValue {
410
+ constructor(cell, value) {
411
+ this.model = {
412
+ address: cell.address,
413
+ type: Cell.Types.String,
414
+ value
415
+ };
416
+ }
417
+ get value() {
418
+ return this.model.value;
419
+ }
420
+ set value(value) {
421
+ this.model.value = value;
422
+ }
423
+ toString() {
424
+ return this.model.value.richText.map(t => t.text).join('');
425
+ }
426
+ get type() {
427
+ return Cell.Types.RichText;
428
+ }
429
+ get effectiveType() {
430
+ return Cell.Types.RichText;
431
+ }
432
+ get address() {
433
+ return this.model.address;
434
+ }
435
+ set address(value) {
436
+ this.model.address = value;
437
+ }
438
+ toCsvString() {
439
+ return "\"".concat(this.text.replace(/"/g, '""'), "\"");
440
+ }
441
+ release() {}
442
+ }
443
+ class DateValue {
444
+ constructor(cell, value) {
445
+ this.model = {
446
+ address: cell.address,
447
+ type: Cell.Types.Date,
448
+ value
449
+ };
450
+ }
451
+ get value() {
452
+ return this.model.value;
453
+ }
454
+ set value(value) {
455
+ this.model.value = value;
456
+ }
457
+ get type() {
458
+ return Cell.Types.Date;
459
+ }
460
+ get effectiveType() {
461
+ return Cell.Types.Date;
462
+ }
463
+ get address() {
464
+ return this.model.address;
465
+ }
466
+ set address(value) {
467
+ this.model.address = value;
468
+ }
469
+ toCsvString() {
470
+ return this.model.value.toISOString();
471
+ }
472
+ release() {}
473
+ toString() {
474
+ return this.model.value.toString();
475
+ }
476
+ }
477
+ class HyperlinkValue {
478
+ constructor(cell, value) {
479
+ this.model = {
480
+ address: cell.address,
481
+ type: Cell.Types.Hyperlink,
482
+ text: value ? value.text : undefined,
483
+ hyperlink: value ? value.hyperlink : undefined
484
+ };
485
+ if (value && value.tooltip) {
486
+ this.model.tooltip = value.tooltip;
487
+ }
488
+ }
489
+ get value() {
490
+ const v = {
491
+ text: this.model.text,
492
+ hyperlink: this.model.hyperlink
493
+ };
494
+ if (this.model.tooltip) {
495
+ v.tooltip = this.model.tooltip;
496
+ }
497
+ return v;
498
+ }
499
+ set value(value) {
500
+ this.model = {
501
+ text: value.text,
502
+ hyperlink: value.hyperlink
503
+ };
504
+ if (value.tooltip) {
505
+ this.model.tooltip = value.tooltip;
506
+ }
507
+ }
508
+ get text() {
509
+ return this.model.text;
510
+ }
511
+ set text(value) {
512
+ this.model.text = value;
513
+ }
514
+
515
+ /*
516
+ get tooltip() {
517
+ return this.model.tooltip;
518
+ }
519
+ set tooltip(value) {
520
+ this.model.tooltip = value;
521
+ } */
522
+
523
+ get hyperlink() {
524
+ return this.model.hyperlink;
525
+ }
526
+ set hyperlink(value) {
527
+ this.model.hyperlink = value;
528
+ }
529
+ get type() {
530
+ return Cell.Types.Hyperlink;
531
+ }
532
+ get effectiveType() {
533
+ return Cell.Types.Hyperlink;
534
+ }
535
+ get address() {
536
+ return this.model.address;
537
+ }
538
+ set address(value) {
539
+ this.model.address = value;
540
+ }
541
+ toCsvString() {
542
+ return this.model.hyperlink;
543
+ }
544
+ release() {}
545
+ toString() {
546
+ return this.model.text;
547
+ }
548
+ }
549
+ class MergeValue {
550
+ constructor(cell, master) {
551
+ this.model = {
552
+ address: cell.address,
553
+ type: Cell.Types.Merge,
554
+ master: master ? master.address : undefined
555
+ };
556
+ this._master = master;
557
+ if (master) {
558
+ master.addMergeRef();
559
+ }
560
+ }
561
+ get value() {
562
+ return this._master.value;
563
+ }
564
+ set value(value) {
565
+ if (value instanceof Cell) {
566
+ if (this._master) {
567
+ this._master.releaseMergeRef();
568
+ }
569
+ value.addMergeRef();
570
+ this._master = value;
571
+ } else {
572
+ this._master.value = value;
573
+ }
574
+ }
575
+ isMergedTo(master) {
576
+ return master === this._master;
577
+ }
578
+ get master() {
579
+ return this._master;
580
+ }
581
+ get type() {
582
+ return Cell.Types.Merge;
583
+ }
584
+ get effectiveType() {
585
+ return this._master.effectiveType;
586
+ }
587
+ get address() {
588
+ return this.model.address;
589
+ }
590
+ set address(value) {
591
+ this.model.address = value;
592
+ }
593
+ toCsvString() {
594
+ return '';
595
+ }
596
+ release() {
597
+ this._master.releaseMergeRef();
598
+ }
599
+ toString() {
600
+ return this.value.toString();
601
+ }
602
+ }
603
+ class FormulaValue {
604
+ constructor(cell, value) {
605
+ this.cell = cell;
606
+ this.model = {
607
+ address: cell.address,
608
+ type: Cell.Types.Formula,
609
+ shareType: value ? value.shareType : undefined,
610
+ ref: value ? value.ref : undefined,
611
+ formula: value ? value.formula : undefined,
612
+ sharedFormula: value ? value.sharedFormula : undefined,
613
+ result: value ? value.result : undefined
614
+ };
615
+ }
616
+ _copyModel(model) {
617
+ const copy = {};
618
+ const cp = name => {
619
+ const value = model[name];
620
+ if (value) {
621
+ copy[name] = value;
622
+ }
623
+ };
624
+ cp('formula');
625
+ cp('result');
626
+ cp('ref');
627
+ cp('shareType');
628
+ cp('sharedFormula');
629
+ return copy;
630
+ }
631
+ get value() {
632
+ return this._copyModel(this.model);
633
+ }
634
+ set value(value) {
635
+ this.model = this._copyModel(value);
636
+ }
637
+ validate(value) {
638
+ switch (Value.getType(value)) {
639
+ case Cell.Types.Null:
640
+ case Cell.Types.String:
641
+ case Cell.Types.Number:
642
+ case Cell.Types.Date:
643
+ break;
644
+ case Cell.Types.Hyperlink:
645
+ case Cell.Types.Formula:
646
+ default:
647
+ throw new Error('Cannot process that type of result value');
648
+ }
649
+ }
650
+ get dependencies() {
651
+ // find all the ranges and cells mentioned in the formula
652
+ const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g);
653
+ const cells = this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g, '').match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);
654
+ return {
655
+ ranges,
656
+ cells
657
+ };
658
+ }
659
+ get formula() {
660
+ return this.model.formula || this._getTranslatedFormula();
661
+ }
662
+ set formula(value) {
663
+ this.model.formula = value;
664
+ }
665
+ get formulaType() {
666
+ if (this.model.formula) {
667
+ return Enums.FormulaType.Master;
668
+ }
669
+ if (this.model.sharedFormula) {
670
+ return Enums.FormulaType.Shared;
671
+ }
672
+ return Enums.FormulaType.None;
673
+ }
674
+ get result() {
675
+ return this.model.result;
676
+ }
677
+ set result(value) {
678
+ this.model.result = value;
679
+ }
680
+ get type() {
681
+ return Cell.Types.Formula;
682
+ }
683
+ get effectiveType() {
684
+ const v = this.model.result;
685
+ if (v === null || v === undefined) {
686
+ return Enums.ValueType.Null;
687
+ }
688
+ if (v instanceof String || typeof v === 'string') {
689
+ return Enums.ValueType.String;
690
+ }
691
+ if (typeof v === 'number') {
692
+ return Enums.ValueType.Number;
693
+ }
694
+ if (v instanceof Date) {
695
+ return Enums.ValueType.Date;
696
+ }
697
+ if (v.text && v.hyperlink) {
698
+ return Enums.ValueType.Hyperlink;
699
+ }
700
+ if (v.formula) {
701
+ return Enums.ValueType.Formula;
702
+ }
703
+ return Enums.ValueType.Null;
704
+ }
705
+ get address() {
706
+ return this.model.address;
707
+ }
708
+ set address(value) {
709
+ this.model.address = value;
710
+ }
711
+ _getTranslatedFormula() {
712
+ if (!this._translatedFormula && this.model.sharedFormula) {
713
+ const worksheet = this.cell.worksheet;
714
+ const master = worksheet.findCell(this.model.sharedFormula);
715
+ this._translatedFormula = master && slideFormula(master.formula, master.address, this.model.address);
716
+ }
717
+ return this._translatedFormula;
718
+ }
719
+ toCsvString() {
720
+ return "".concat(this.model.result || '');
721
+ }
722
+ release() {}
723
+ toString() {
724
+ return this.model.result ? this.model.result.toString() : '';
725
+ }
726
+ }
727
+ class SharedStringValue {
728
+ constructor(cell, value) {
729
+ this.model = {
730
+ address: cell.address,
731
+ type: Cell.Types.SharedString,
732
+ value
733
+ };
734
+ }
735
+ get value() {
736
+ return this.model.value;
737
+ }
738
+ set value(value) {
739
+ this.model.value = value;
740
+ }
741
+ get type() {
742
+ return Cell.Types.SharedString;
743
+ }
744
+ get effectiveType() {
745
+ return Cell.Types.SharedString;
746
+ }
747
+ get address() {
748
+ return this.model.address;
749
+ }
750
+ set address(value) {
751
+ this.model.address = value;
752
+ }
753
+ toCsvString() {
754
+ return this.model.value.toString();
755
+ }
756
+ release() {}
757
+ toString() {
758
+ return this.model.value.toString();
759
+ }
760
+ }
761
+ class BooleanValue {
762
+ constructor(cell, value) {
763
+ this.model = {
764
+ address: cell.address,
765
+ type: Cell.Types.Boolean,
766
+ value
767
+ };
768
+ }
769
+ get value() {
770
+ return this.model.value;
771
+ }
772
+ set value(value) {
773
+ this.model.value = value;
774
+ }
775
+ get type() {
776
+ return Cell.Types.Boolean;
777
+ }
778
+ get effectiveType() {
779
+ return Cell.Types.Boolean;
780
+ }
781
+ get address() {
782
+ return this.model.address;
783
+ }
784
+ set address(value) {
785
+ this.model.address = value;
786
+ }
787
+ toCsvString() {
788
+ return this.model.value ? 1 : 0;
789
+ }
790
+ release() {}
791
+ toString() {
792
+ return this.model.value.toString();
793
+ }
794
+ }
795
+ class ErrorValue {
796
+ constructor(cell, value) {
797
+ this.model = {
798
+ address: cell.address,
799
+ type: Cell.Types.Error,
800
+ value
801
+ };
802
+ }
803
+ get value() {
804
+ return this.model.value;
805
+ }
806
+ set value(value) {
807
+ this.model.value = value;
808
+ }
809
+ get type() {
810
+ return Cell.Types.Error;
811
+ }
812
+ get effectiveType() {
813
+ return Cell.Types.Error;
814
+ }
815
+ get address() {
816
+ return this.model.address;
817
+ }
818
+ set address(value) {
819
+ this.model.address = value;
820
+ }
821
+ toCsvString() {
822
+ return this.toString();
823
+ }
824
+ release() {}
825
+ toString() {
826
+ return this.model.value.error.toString();
827
+ }
828
+ }
829
+ class JSONValue {
830
+ constructor(cell, value) {
831
+ this.model = {
832
+ address: cell.address,
833
+ type: Cell.Types.String,
834
+ value: JSON.stringify(value),
835
+ rawValue: value
836
+ };
837
+ }
838
+ get value() {
839
+ return this.model.rawValue;
840
+ }
841
+ set value(value) {
842
+ this.model.rawValue = value;
843
+ this.model.value = JSON.stringify(value);
844
+ }
845
+ get type() {
846
+ return Cell.Types.String;
847
+ }
848
+ get effectiveType() {
849
+ return Cell.Types.String;
850
+ }
851
+ get address() {
852
+ return this.model.address;
853
+ }
854
+ set address(value) {
855
+ this.model.address = value;
856
+ }
857
+ toCsvString() {
858
+ return this.model.value;
859
+ }
860
+ release() {}
861
+ toString() {
862
+ return this.model.value;
863
+ }
864
+ }
865
+
866
+ // Value is a place to hold common static Value type functions
867
+ const Value = {
868
+ getType(value) {
869
+ if (value === null || value === undefined) {
870
+ return Cell.Types.Null;
871
+ }
872
+ if (value instanceof String || typeof value === 'string') {
873
+ return Cell.Types.String;
874
+ }
875
+ if (typeof value === 'number') {
876
+ return Cell.Types.Number;
877
+ }
878
+ if (typeof value === 'boolean') {
879
+ return Cell.Types.Boolean;
880
+ }
881
+ if (value instanceof Date) {
882
+ return Cell.Types.Date;
883
+ }
884
+ if (value.text && value.hyperlink) {
885
+ return Cell.Types.Hyperlink;
886
+ }
887
+ if (value.formula || value.sharedFormula) {
888
+ return Cell.Types.Formula;
889
+ }
890
+ if (value.richText) {
891
+ return Cell.Types.RichText;
892
+ }
893
+ if (value.sharedString) {
894
+ return Cell.Types.SharedString;
895
+ }
896
+ if (value.error) {
897
+ return Cell.Types.Error;
898
+ }
899
+ return Cell.Types.JSON;
900
+ },
901
+ // map valueType to constructor
902
+ types: [{
903
+ t: Cell.Types.Null,
904
+ f: NullValue
905
+ }, {
906
+ t: Cell.Types.Number,
907
+ f: NumberValue
908
+ }, {
909
+ t: Cell.Types.String,
910
+ f: StringValue
911
+ }, {
912
+ t: Cell.Types.Date,
913
+ f: DateValue
914
+ }, {
915
+ t: Cell.Types.Hyperlink,
916
+ f: HyperlinkValue
917
+ }, {
918
+ t: Cell.Types.Formula,
919
+ f: FormulaValue
920
+ }, {
921
+ t: Cell.Types.Merge,
922
+ f: MergeValue
923
+ }, {
924
+ t: Cell.Types.JSON,
925
+ f: JSONValue
926
+ }, {
927
+ t: Cell.Types.SharedString,
928
+ f: SharedStringValue
929
+ }, {
930
+ t: Cell.Types.RichText,
931
+ f: RichTextValue
932
+ }, {
933
+ t: Cell.Types.Boolean,
934
+ f: BooleanValue
935
+ }, {
936
+ t: Cell.Types.Error,
937
+ f: ErrorValue
938
+ }].reduce((p, t) => {
939
+ p[t.t] = t.f;
940
+ return p;
941
+ }, []),
942
+ create(type, cell, value) {
943
+ const T = this.types[type];
944
+ if (!T) {
945
+ throw new Error("Could not create Value of type ".concat(type));
946
+ }
947
+ return new T(cell, value);
948
+ }
949
+ };
950
+ module.exports = Cell;
951
+ //# sourceMappingURL=cell.js.map