@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 @@
1
+ {"version":3,"file":"cell.js","names":["colCache","require","_","Enums","_require","slideFormula","Note","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","numFmt","value","font","alignment","border","fill","protection","rowStyle","colStyle","number","col","$col$row","concat","letter","type","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","Merge","merge","master","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","name","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","find","add","model","comment","fromModel","ValueType","NullValue","cell","NumberValue","Number","StringValue","replace","RichTextValue","richText","map","t","join","RichText","DateValue","Date","toISOString","HyperlinkValue","undefined","tooltip","MergeValue","_master","FormulaValue","Formula","shareType","ref","sharedFormula","_copyModel","copy","cp","validate","dependencies","ranges","match","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","_translatedFormula","findCell","SharedStringValue","SharedString","BooleanValue","Boolean","ErrorValue","error","JSONValue","JSON","stringify","rawValue","sharedString","types","f","reduce","p","T","module","exports"],"sources":["../../../lib/doc/cell.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nconst colCache = require('../utils/col-cache');\nconst _ = require('../utils/under-dash');\nconst Enums = require('./enums');\nconst {slideFormula} = require('../utils/shared-formula');\nconst Note = require('./note');\n// Cell requirements\n// Operate inside a worksheet\n// Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.\n// Manage/use and manipulate cell format either as local to cell or inherited from column or row.\n\nclass Cell {\n constructor(row, column, address) {\n if (!row || !column) {\n throw new Error('A Cell needs a Row');\n }\n\n this._row = row;\n this._column = column;\n\n colCache.validateAddress(address);\n this._address = address;\n\n // TODO: lazy evaluation of this._value\n this._value = Value.create(Cell.Types.Null, this);\n\n this.style = this._mergeStyle(row.style, column.style, {});\n\n this._mergeCount = 0;\n }\n\n get worksheet() {\n return this._row.worksheet;\n }\n\n get workbook() {\n return this._row.worksheet.workbook;\n }\n\n // help GC by removing cyclic (and other) references\n destroy() {\n delete this.style;\n delete this._value;\n delete this._row;\n delete this._column;\n delete this._address;\n }\n\n // =========================================================================\n // Styles stuff\n get numFmt() {\n return this.style.numFmt;\n }\n\n set numFmt(value) {\n this.style.numFmt = value;\n }\n\n get font() {\n return this.style.font;\n }\n\n set font(value) {\n this.style.font = value;\n }\n\n get alignment() {\n return this.style.alignment;\n }\n\n set alignment(value) {\n this.style.alignment = value;\n }\n\n get border() {\n return this.style.border;\n }\n\n set border(value) {\n this.style.border = value;\n }\n\n get fill() {\n return this.style.fill;\n }\n\n set fill(value) {\n this.style.fill = value;\n }\n\n get protection() {\n return this.style.protection;\n }\n\n set protection(value) {\n this.style.protection = value;\n }\n\n _mergeStyle(rowStyle, colStyle, style) {\n const numFmt = (rowStyle && rowStyle.numFmt) || (colStyle && colStyle.numFmt);\n if (numFmt) style.numFmt = numFmt;\n\n const font = (rowStyle && rowStyle.font) || (colStyle && colStyle.font);\n if (font) style.font = font;\n\n const alignment = (rowStyle && rowStyle.alignment) || (colStyle && colStyle.alignment);\n if (alignment) style.alignment = alignment;\n\n const border = (rowStyle && rowStyle.border) || (colStyle && colStyle.border);\n if (border) style.border = border;\n\n const fill = (rowStyle && rowStyle.fill) || (colStyle && colStyle.fill);\n if (fill) style.fill = fill;\n\n const protection = (rowStyle && rowStyle.protection) || (colStyle && colStyle.protection);\n if (protection) style.protection = protection;\n\n return style;\n }\n\n // =========================================================================\n // return the address for this cell\n get address() {\n return this._address;\n }\n\n get row() {\n return this._row.number;\n }\n\n get col() {\n return this._column.number;\n }\n\n get $col$row() {\n return `$${this._column.letter}$${this.row}`;\n }\n\n // =========================================================================\n // Value stuff\n\n get type() {\n return this._value.type;\n }\n\n get effectiveType() {\n return this._value.effectiveType;\n }\n\n toCsvString() {\n return this._value.toCsvString();\n }\n\n // =========================================================================\n // Merge stuff\n\n addMergeRef() {\n this._mergeCount++;\n }\n\n releaseMergeRef() {\n this._mergeCount--;\n }\n\n get isMerged() {\n return this._mergeCount > 0 || this.type === Cell.Types.Merge;\n }\n\n merge(master, ignoreStyle) {\n this._value.release();\n this._value = Value.create(Cell.Types.Merge, this, master);\n if (!ignoreStyle) {\n this.style = master.style;\n }\n }\n\n unmerge() {\n if (this.type === Cell.Types.Merge) {\n this._value.release();\n this._value = Value.create(Cell.Types.Null, this);\n this.style = this._mergeStyle(this._row.style, this._column.style, {});\n }\n }\n\n isMergedTo(master) {\n if (this._value.type !== Cell.Types.Merge) return false;\n return this._value.isMergedTo(master);\n }\n\n get master() {\n if (this.type === Cell.Types.Merge) {\n return this._value.master;\n }\n return this; // an unmerged cell is its own master\n }\n\n get isHyperlink() {\n return this._value.type === Cell.Types.Hyperlink;\n }\n\n get hyperlink() {\n return this._value.hyperlink;\n }\n\n // return the value\n get value() {\n return this._value.value;\n }\n\n // set the value - can be number, string or raw\n set value(v) {\n // special case - merge cells set their master's value\n if (this.type === Cell.Types.Merge) {\n this._value.master.value = v;\n return;\n }\n\n this._value.release();\n\n // assign value\n this._value = Value.create(Value.getType(v), this, v);\n }\n\n get note() {\n return this._comment && this._comment.note;\n }\n\n set note(note) {\n this._comment = new Note(note);\n }\n\n get text() {\n return this._value.toString();\n }\n\n get html() {\n return _.escapeHtml(this.text);\n }\n\n toString() {\n return this.text;\n }\n\n _upgradeToHyperlink(hyperlink) {\n // if this cell is a string, turn it into a Hyperlink\n if (this.type === Cell.Types.String) {\n this._value = Value.create(Cell.Types.Hyperlink, this, {\n text: this._value.value,\n hyperlink,\n });\n }\n }\n\n // =========================================================================\n // Formula stuff\n get formula() {\n return this._value.formula;\n }\n\n get result() {\n return this._value.result;\n }\n\n get formulaType() {\n return this._value.formulaType;\n }\n\n // =========================================================================\n // Name stuff\n get fullAddress() {\n const {worksheet} = this._row;\n return {\n sheetName: worksheet.name,\n address: this.address,\n row: this.row,\n col: this.col,\n };\n }\n\n get name() {\n return this.names[0];\n }\n\n set name(value) {\n this.names = [value];\n }\n\n get names() {\n return this.workbook.definedNames.getNamesEx(this.fullAddress);\n }\n\n set names(value) {\n const {definedNames} = this.workbook;\n definedNames.removeAllNames(this.fullAddress);\n value.forEach(name => {\n definedNames.addEx(this.fullAddress, name);\n });\n }\n\n addName(name) {\n this.workbook.definedNames.addEx(this.fullAddress, name);\n }\n\n removeName(name) {\n this.workbook.definedNames.removeEx(this.fullAddress, name);\n }\n\n removeAllNames() {\n this.workbook.definedNames.removeAllNames(this.fullAddress);\n }\n\n // =========================================================================\n // Data Validation stuff\n get _dataValidations() {\n return this.worksheet.dataValidations;\n }\n\n get dataValidation() {\n return this._dataValidations.find(this.address);\n }\n\n set dataValidation(value) {\n this._dataValidations.add(this.address, value);\n }\n\n // =========================================================================\n // Model stuff\n\n get model() {\n const {model} = this._value;\n model.style = this.style;\n if (this._comment) {\n model.comment = this._comment.model;\n }\n return model;\n }\n\n set model(value) {\n this._value.release();\n this._value = Value.create(value.type, this);\n this._value.model = value;\n\n if (value.comment) {\n switch (value.comment.type) {\n case 'note':\n this._comment = Note.fromModel(value.comment);\n break;\n }\n }\n\n if (value.style) {\n this.style = value.style;\n } else {\n this.style = {};\n }\n }\n}\nCell.Types = Enums.ValueType;\n\n// =============================================================================\n// Internal Value Types\n\nclass NullValue {\n constructor(cell) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Null,\n };\n }\n\n get value() {\n return null;\n }\n\n set value(value) {\n // nothing to do\n }\n\n get type() {\n return Cell.Types.Null;\n }\n\n get effectiveType() {\n return Cell.Types.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {}\n\n toString() {\n return '';\n }\n}\n\nclass NumberValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Number,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Number;\n }\n\n get effectiveType() {\n return Cell.Types.Number;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass StringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.model.value.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\nclass RichTextValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n toString() {\n return this.model.value.richText.map(t => t.text).join('');\n }\n\n get type() {\n return Cell.Types.RichText;\n }\n\n get effectiveType() {\n return Cell.Types.RichText;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.text.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n}\n\nclass DateValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Date,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Date;\n }\n\n get effectiveType() {\n return Cell.Types.Date;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toISOString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass HyperlinkValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Hyperlink,\n text: value ? value.text : undefined,\n hyperlink: value ? value.hyperlink : undefined,\n };\n if (value && value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get value() {\n const v = {\n text: this.model.text,\n hyperlink: this.model.hyperlink,\n };\n if (this.model.tooltip) {\n v.tooltip = this.model.tooltip;\n }\n return v;\n }\n\n set value(value) {\n this.model = {\n text: value.text,\n hyperlink: value.hyperlink,\n };\n if (value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get text() {\n return this.model.text;\n }\n\n set text(value) {\n this.model.text = value;\n }\n\n /*\n get tooltip() {\n return this.model.tooltip;\n }\n\n set tooltip(value) {\n this.model.tooltip = value;\n } */\n\n get hyperlink() {\n return this.model.hyperlink;\n }\n\n set hyperlink(value) {\n this.model.hyperlink = value;\n }\n\n get type() {\n return Cell.Types.Hyperlink;\n }\n\n get effectiveType() {\n return Cell.Types.Hyperlink;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.hyperlink;\n }\n\n release() {}\n\n toString() {\n return this.model.text;\n }\n}\n\nclass MergeValue {\n constructor(cell, master) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Merge,\n master: master ? master.address : undefined,\n };\n this._master = master;\n if (master) {\n master.addMergeRef();\n }\n }\n\n get value() {\n return this._master.value;\n }\n\n set value(value) {\n if (value instanceof Cell) {\n if (this._master) {\n this._master.releaseMergeRef();\n }\n value.addMergeRef();\n this._master = value;\n } else {\n this._master.value = value;\n }\n }\n\n isMergedTo(master) {\n return master === this._master;\n }\n\n get master() {\n return this._master;\n }\n\n get type() {\n return Cell.Types.Merge;\n }\n\n get effectiveType() {\n return this._master.effectiveType;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {\n this._master.releaseMergeRef();\n }\n\n toString() {\n return this.value.toString();\n }\n}\n\nclass FormulaValue {\n constructor(cell, value) {\n this.cell = cell;\n\n this.model = {\n address: cell.address,\n type: Cell.Types.Formula,\n shareType: value ? value.shareType : undefined,\n ref: value ? value.ref : undefined,\n formula: value ? value.formula : undefined,\n sharedFormula: value ? value.sharedFormula : undefined,\n result: value ? value.result : undefined,\n };\n }\n\n _copyModel(model) {\n const copy = {};\n const cp = name => {\n const value = model[name];\n if (value) {\n copy[name] = value;\n }\n };\n cp('formula');\n cp('result');\n cp('ref');\n cp('shareType');\n cp('sharedFormula');\n return copy;\n }\n\n get value() {\n return this._copyModel(this.model);\n }\n\n set value(value) {\n this.model = this._copyModel(value);\n }\n\n validate(value) {\n switch (Value.getType(value)) {\n case Cell.Types.Null:\n case Cell.Types.String:\n case Cell.Types.Number:\n case Cell.Types.Date:\n break;\n case Cell.Types.Hyperlink:\n case Cell.Types.Formula:\n default:\n throw new Error('Cannot process that type of result value');\n }\n }\n\n get dependencies() {\n // find all the ranges and cells mentioned in the formula\n const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g);\n const cells = this.formula\n .replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g, '')\n .match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g);\n return {\n ranges,\n cells,\n };\n }\n\n get formula() {\n return this.model.formula || this._getTranslatedFormula();\n }\n\n set formula(value) {\n this.model.formula = value;\n }\n\n get formulaType() {\n if (this.model.formula) {\n return Enums.FormulaType.Master;\n }\n if (this.model.sharedFormula) {\n return Enums.FormulaType.Shared;\n }\n return Enums.FormulaType.None;\n }\n\n get result() {\n return this.model.result;\n }\n\n set result(value) {\n this.model.result = value;\n }\n\n get type() {\n return Cell.Types.Formula;\n }\n\n get effectiveType() {\n const v = this.model.result;\n if (v === null || v === undefined) {\n return Enums.ValueType.Null;\n }\n if (v instanceof String || typeof v === 'string') {\n return Enums.ValueType.String;\n }\n if (typeof v === 'number') {\n return Enums.ValueType.Number;\n }\n if (v instanceof Date) {\n return Enums.ValueType.Date;\n }\n if (v.text && v.hyperlink) {\n return Enums.ValueType.Hyperlink;\n }\n if (v.formula) {\n return Enums.ValueType.Formula;\n }\n\n return Enums.ValueType.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n _getTranslatedFormula() {\n if (!this._translatedFormula && this.model.sharedFormula) {\n const {worksheet} = this.cell;\n const master = worksheet.findCell(this.model.sharedFormula);\n this._translatedFormula =\n master && slideFormula(master.formula, master.address, this.model.address);\n }\n return this._translatedFormula;\n }\n\n toCsvString() {\n return `${this.model.result || ''}`;\n }\n\n release() {}\n\n toString() {\n return this.model.result ? this.model.result.toString() : '';\n }\n}\n\nclass SharedStringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.SharedString,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.SharedString;\n }\n\n get effectiveType() {\n return Cell.Types.SharedString;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass BooleanValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Boolean,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Boolean;\n }\n\n get effectiveType() {\n return Cell.Types.Boolean;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value ? 1 : 0;\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass ErrorValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Error,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Error;\n }\n\n get effectiveType() {\n return Cell.Types.Error;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.error.toString();\n }\n}\n\nclass JSONValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value: JSON.stringify(value),\n rawValue: value,\n };\n }\n\n get value() {\n return this.model.rawValue;\n }\n\n set value(value) {\n this.model.rawValue = value;\n this.model.value = JSON.stringify(value);\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\n// Value is a place to hold common static Value type functions\nconst Value = {\n getType(value) {\n if (value === null || value === undefined) {\n return Cell.Types.Null;\n }\n if (value instanceof String || typeof value === 'string') {\n return Cell.Types.String;\n }\n if (typeof value === 'number') {\n return Cell.Types.Number;\n }\n if (typeof value === 'boolean') {\n return Cell.Types.Boolean;\n }\n if (value instanceof Date) {\n return Cell.Types.Date;\n }\n if (value.text && value.hyperlink) {\n return Cell.Types.Hyperlink;\n }\n if (value.formula || value.sharedFormula) {\n return Cell.Types.Formula;\n }\n if (value.richText) {\n return Cell.Types.RichText;\n }\n if (value.sharedString) {\n return Cell.Types.SharedString;\n }\n if (value.error) {\n return Cell.Types.Error;\n }\n return Cell.Types.JSON;\n },\n\n // map valueType to constructor\n types: [\n {t: Cell.Types.Null, f: NullValue},\n {t: Cell.Types.Number, f: NumberValue},\n {t: Cell.Types.String, f: StringValue},\n {t: Cell.Types.Date, f: DateValue},\n {t: Cell.Types.Hyperlink, f: HyperlinkValue},\n {t: Cell.Types.Formula, f: FormulaValue},\n {t: Cell.Types.Merge, f: MergeValue},\n {t: Cell.Types.JSON, f: JSONValue},\n {t: Cell.Types.SharedString, f: SharedStringValue},\n {t: Cell.Types.RichText, f: RichTextValue},\n {t: Cell.Types.Boolean, f: BooleanValue},\n {t: Cell.Types.Error, f: ErrorValue},\n ].reduce((p, t) => {\n p[t.t] = t.f;\n return p;\n }, []),\n\n create(type, cell, value) {\n const T = this.types[type];\n if (!T) {\n throw new Error(`Could not create Value of type ${type}`);\n }\n return new T(cell, value);\n },\n};\n\nmodule.exports = Cell;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,274 @@
1
+ 'use strict';
2
+
3
+ const _ = require('../utils/under-dash');
4
+ const Enums = require('./enums');
5
+ const colCache = require('../utils/col-cache');
6
+ const DEFAULT_COLUMN_WIDTH = 9;
7
+
8
+ // Column defines the column properties for 1 column.
9
+ // This includes header rows, widths, key, (style), etc.
10
+ // Worksheet will condense the columns as appropriate during serialization
11
+ class Column {
12
+ constructor(worksheet, number, defn) {
13
+ this._worksheet = worksheet;
14
+ this._number = number;
15
+ if (defn !== false) {
16
+ // sometimes defn will follow
17
+ this.defn = defn;
18
+ }
19
+ }
20
+ get number() {
21
+ return this._number;
22
+ }
23
+ get worksheet() {
24
+ return this._worksheet;
25
+ }
26
+ get letter() {
27
+ return colCache.n2l(this._number);
28
+ }
29
+ get isCustomWidth() {
30
+ return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;
31
+ }
32
+ get defn() {
33
+ return {
34
+ header: this._header,
35
+ key: this.key,
36
+ width: this.width,
37
+ style: this.style,
38
+ hidden: this.hidden,
39
+ outlineLevel: this.outlineLevel
40
+ };
41
+ }
42
+ set defn(value) {
43
+ if (value) {
44
+ this.key = value.key;
45
+ this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;
46
+ this.outlineLevel = value.outlineLevel;
47
+ if (value.style) {
48
+ this.style = value.style;
49
+ } else {
50
+ this.style = {};
51
+ }
52
+
53
+ // headers must be set after style
54
+ this.header = value.header;
55
+ this._hidden = !!value.hidden;
56
+ } else {
57
+ delete this._header;
58
+ delete this._key;
59
+ delete this.width;
60
+ this.style = {};
61
+ this.outlineLevel = 0;
62
+ }
63
+ }
64
+ get headers() {
65
+ return this._header && this._header instanceof Array ? this._header : [this._header];
66
+ }
67
+ get header() {
68
+ return this._header;
69
+ }
70
+ set header(value) {
71
+ if (value !== undefined) {
72
+ this._header = value;
73
+ this.headers.forEach((text, index) => {
74
+ this._worksheet.getCell(index + 1, this.number).value = text;
75
+ });
76
+ } else {
77
+ this._header = undefined;
78
+ }
79
+ }
80
+ get key() {
81
+ return this._key;
82
+ }
83
+ set key(value) {
84
+ const column = this._key && this._worksheet.getColumnKey(this._key);
85
+ if (column === this) {
86
+ this._worksheet.deleteColumnKey(this._key);
87
+ }
88
+ this._key = value;
89
+ if (value) {
90
+ this._worksheet.setColumnKey(this._key, this);
91
+ }
92
+ }
93
+ get hidden() {
94
+ return !!this._hidden;
95
+ }
96
+ set hidden(value) {
97
+ this._hidden = value;
98
+ }
99
+ get outlineLevel() {
100
+ return this._outlineLevel || 0;
101
+ }
102
+ set outlineLevel(value) {
103
+ this._outlineLevel = value;
104
+ }
105
+ get collapsed() {
106
+ return !!(this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol);
107
+ }
108
+ toString() {
109
+ return JSON.stringify({
110
+ key: this.key,
111
+ width: this.width,
112
+ headers: this.headers.length ? this.headers : undefined
113
+ });
114
+ }
115
+ equivalentTo(other) {
116
+ return this.width === other.width && this.hidden === other.hidden && this.outlineLevel === other.outlineLevel && _.isEqual(this.style, other.style);
117
+ }
118
+ get isDefault() {
119
+ if (this.isCustomWidth) {
120
+ return false;
121
+ }
122
+ if (this.hidden) {
123
+ return false;
124
+ }
125
+ if (this.outlineLevel) {
126
+ return false;
127
+ }
128
+ const s = this.style;
129
+ if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {
130
+ return false;
131
+ }
132
+ return true;
133
+ }
134
+ get headerCount() {
135
+ return this.headers.length;
136
+ }
137
+ eachCell(options, iteratee) {
138
+ const colNumber = this.number;
139
+ if (!iteratee) {
140
+ iteratee = options;
141
+ options = null;
142
+ }
143
+ this._worksheet.eachRow(options, (row, rowNumber) => {
144
+ iteratee(row.getCell(colNumber), rowNumber);
145
+ });
146
+ }
147
+ get values() {
148
+ const v = [];
149
+ this.eachCell((cell, rowNumber) => {
150
+ if (cell && cell.type !== Enums.ValueType.Null) {
151
+ v[rowNumber] = cell.value;
152
+ }
153
+ });
154
+ return v;
155
+ }
156
+ set values(v) {
157
+ if (!v) {
158
+ return;
159
+ }
160
+ const colNumber = this.number;
161
+ let offset = 0;
162
+ if (v.hasOwnProperty('0')) {
163
+ // assume contiguous array, start at row 1
164
+ offset = 1;
165
+ }
166
+ v.forEach((value, index) => {
167
+ this._worksheet.getCell(index + offset, colNumber).value = value;
168
+ });
169
+ }
170
+
171
+ // =========================================================================
172
+ // styles
173
+ _applyStyle(name, value) {
174
+ this.style[name] = value;
175
+ this.eachCell(cell => {
176
+ cell[name] = value;
177
+ });
178
+ return value;
179
+ }
180
+ get numFmt() {
181
+ return this.style.numFmt;
182
+ }
183
+ set numFmt(value) {
184
+ this._applyStyle('numFmt', value);
185
+ }
186
+ get font() {
187
+ return this.style.font;
188
+ }
189
+ set font(value) {
190
+ this._applyStyle('font', value);
191
+ }
192
+ get alignment() {
193
+ return this.style.alignment;
194
+ }
195
+ set alignment(value) {
196
+ this._applyStyle('alignment', value);
197
+ }
198
+ get protection() {
199
+ return this.style.protection;
200
+ }
201
+ set protection(value) {
202
+ this._applyStyle('protection', value);
203
+ }
204
+ get border() {
205
+ return this.style.border;
206
+ }
207
+ set border(value) {
208
+ this._applyStyle('border', value);
209
+ }
210
+ get fill() {
211
+ return this.style.fill;
212
+ }
213
+ set fill(value) {
214
+ this._applyStyle('fill', value);
215
+ }
216
+
217
+ // =============================================================================
218
+ // static functions
219
+
220
+ static toModel(columns) {
221
+ // Convert array of Column into compressed list cols
222
+ const cols = [];
223
+ let col = null;
224
+ if (columns) {
225
+ columns.forEach((column, index) => {
226
+ if (column.isDefault) {
227
+ if (col) {
228
+ col = null;
229
+ }
230
+ } else if (!col || !column.equivalentTo(col)) {
231
+ col = {
232
+ min: index + 1,
233
+ max: index + 1,
234
+ width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,
235
+ style: column.style,
236
+ isCustomWidth: column.isCustomWidth,
237
+ hidden: column.hidden,
238
+ outlineLevel: column.outlineLevel,
239
+ collapsed: column.collapsed
240
+ };
241
+ cols.push(col);
242
+ } else {
243
+ col.max = index + 1;
244
+ }
245
+ });
246
+ }
247
+ return cols.length ? cols : undefined;
248
+ }
249
+ static fromModel(worksheet, cols) {
250
+ cols = cols || [];
251
+ const columns = [];
252
+ let count = 1;
253
+ let index = 0;
254
+ /**
255
+ * sort cols by min
256
+ * If it is not sorted, the subsequent column configuration will be overwritten
257
+ * */
258
+ cols = cols.sort(function (pre, next) {
259
+ return pre.min - next.min;
260
+ });
261
+ while (index < cols.length) {
262
+ const col = cols[index++];
263
+ while (count < col.min) {
264
+ columns.push(new Column(worksheet, count++));
265
+ }
266
+ while (count <= col.max) {
267
+ columns.push(new Column(worksheet, count++, col));
268
+ }
269
+ }
270
+ return columns.length ? columns : null;
271
+ }
272
+ }
273
+ module.exports = Column;
274
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","names":["_","require","Enums","colCache","DEFAULT_COLUMN_WIDTH","Column","constructor","worksheet","number","defn","_worksheet","_number","letter","n2l","isCustomWidth","width","undefined","header","_header","key","style","hidden","outlineLevel","value","_hidden","_key","headers","Array","forEach","text","index","getCell","column","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","collapsed","properties","outlineLevelCol","toString","JSON","stringify","length","equivalentTo","other","isEqual","isDefault","s","font","numFmt","alignment","border","fill","protection","headerCount","eachCell","options","iteratee","colNumber","eachRow","row","rowNumber","values","v","cell","type","ValueType","Null","offset","hasOwnProperty","_applyStyle","name","toModel","columns","cols","col","min","max","push","fromModel","count","sort","pre","next","module","exports"],"sources":["../../../lib/doc/column.js"],"sourcesContent":["'use strict';\n\nconst _ = require('../utils/under-dash');\n\nconst Enums = require('./enums');\nconst colCache = require('../utils/col-cache');\n\nconst DEFAULT_COLUMN_WIDTH = 9;\n\n// Column defines the column properties for 1 column.\n// This includes header rows, widths, key, (style), etc.\n// Worksheet will condense the columns as appropriate during serialization\nclass Column {\n constructor(worksheet, number, defn) {\n this._worksheet = worksheet;\n this._number = number;\n if (defn !== false) {\n // sometimes defn will follow\n this.defn = defn;\n }\n }\n\n get number() {\n return this._number;\n }\n\n get worksheet() {\n return this._worksheet;\n }\n\n get letter() {\n return colCache.n2l(this._number);\n }\n\n get isCustomWidth() {\n return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;\n }\n\n get defn() {\n return {\n header: this._header,\n key: this.key,\n width: this.width,\n style: this.style,\n hidden: this.hidden,\n outlineLevel: this.outlineLevel,\n };\n }\n\n set defn(value) {\n if (value) {\n this.key = value.key;\n this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;\n this.outlineLevel = value.outlineLevel;\n if (value.style) {\n this.style = value.style;\n } else {\n this.style = {};\n }\n\n // headers must be set after style\n this.header = value.header;\n this._hidden = !!value.hidden;\n } else {\n delete this._header;\n delete this._key;\n delete this.width;\n this.style = {};\n this.outlineLevel = 0;\n }\n }\n\n get headers() {\n return this._header && this._header instanceof Array ? this._header : [this._header];\n }\n\n get header() {\n return this._header;\n }\n\n set header(value) {\n if (value !== undefined) {\n this._header = value;\n this.headers.forEach((text, index) => {\n this._worksheet.getCell(index + 1, this.number).value = text;\n });\n } else {\n this._header = undefined;\n }\n }\n\n get key() {\n return this._key;\n }\n\n set key(value) {\n const column = this._key && this._worksheet.getColumnKey(this._key);\n if (column === this) {\n this._worksheet.deleteColumnKey(this._key);\n }\n\n this._key = value;\n if (value) {\n this._worksheet.setColumnKey(this._key, this);\n }\n }\n\n get hidden() {\n return !!this._hidden;\n }\n\n set hidden(value) {\n this._hidden = value;\n }\n\n get outlineLevel() {\n return this._outlineLevel || 0;\n }\n\n set outlineLevel(value) {\n this._outlineLevel = value;\n }\n\n get collapsed() {\n return !!(\n this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol\n );\n }\n\n toString() {\n return JSON.stringify({\n key: this.key,\n width: this.width,\n headers: this.headers.length ? this.headers : undefined,\n });\n }\n\n equivalentTo(other) {\n return (\n this.width === other.width &&\n this.hidden === other.hidden &&\n this.outlineLevel === other.outlineLevel &&\n _.isEqual(this.style, other.style)\n );\n }\n\n get isDefault() {\n if (this.isCustomWidth) {\n return false;\n }\n if (this.hidden) {\n return false;\n }\n if (this.outlineLevel) {\n return false;\n }\n const s = this.style;\n if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {\n return false;\n }\n return true;\n }\n\n get headerCount() {\n return this.headers.length;\n }\n\n eachCell(options, iteratee) {\n const colNumber = this.number;\n if (!iteratee) {\n iteratee = options;\n options = null;\n }\n this._worksheet.eachRow(options, (row, rowNumber) => {\n iteratee(row.getCell(colNumber), rowNumber);\n });\n }\n\n get values() {\n const v = [];\n this.eachCell((cell, rowNumber) => {\n if (cell && cell.type !== Enums.ValueType.Null) {\n v[rowNumber] = cell.value;\n }\n });\n return v;\n }\n\n set values(v) {\n if (!v) {\n return;\n }\n const colNumber = this.number;\n let offset = 0;\n if (v.hasOwnProperty('0')) {\n // assume contiguous array, start at row 1\n offset = 1;\n }\n v.forEach((value, index) => {\n this._worksheet.getCell(index + offset, colNumber).value = value;\n });\n }\n\n // =========================================================================\n // styles\n _applyStyle(name, value) {\n this.style[name] = value;\n this.eachCell(cell => {\n cell[name] = value;\n });\n return value;\n }\n\n get numFmt() {\n return this.style.numFmt;\n }\n\n set numFmt(value) {\n this._applyStyle('numFmt', value);\n }\n\n get font() {\n return this.style.font;\n }\n\n set font(value) {\n this._applyStyle('font', value);\n }\n\n get alignment() {\n return this.style.alignment;\n }\n\n set alignment(value) {\n this._applyStyle('alignment', value);\n }\n\n get protection() {\n return this.style.protection;\n }\n\n set protection(value) {\n this._applyStyle('protection', value);\n }\n\n get border() {\n return this.style.border;\n }\n\n set border(value) {\n this._applyStyle('border', value);\n }\n\n get fill() {\n return this.style.fill;\n }\n\n set fill(value) {\n this._applyStyle('fill', value);\n }\n\n // =============================================================================\n // static functions\n\n static toModel(columns) {\n // Convert array of Column into compressed list cols\n const cols = [];\n let col = null;\n if (columns) {\n columns.forEach((column, index) => {\n if (column.isDefault) {\n if (col) {\n col = null;\n }\n } else if (!col || !column.equivalentTo(col)) {\n col = {\n min: index + 1,\n max: index + 1,\n width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,\n style: column.style,\n isCustomWidth: column.isCustomWidth,\n hidden: column.hidden,\n outlineLevel: column.outlineLevel,\n collapsed: column.collapsed,\n };\n cols.push(col);\n } else {\n col.max = index + 1;\n }\n });\n }\n return cols.length ? cols : undefined;\n }\n\n static fromModel(worksheet, cols) {\n cols = cols || [];\n const columns = [];\n let count = 1;\n let index = 0;\n /**\n * sort cols by min\n * If it is not sorted, the subsequent column configuration will be overwritten\n * */\n cols = cols.sort(function(pre, next) {\n return pre.min - next.min;\n });\n while (index < cols.length) {\n const col = cols[index++];\n while (count < col.min) {\n columns.push(new Column(worksheet, count++));\n }\n while (count <= col.max) {\n columns.push(new Column(worksheet, count++, col));\n }\n }\n return columns.length ? columns : null;\n }\n}\n\nmodule.exports = Column;\n"],"mappings":"AAAA,YAAY;;AAEZ,MAAMA,CAAC,GAAGC,OAAO,CAAC,qBAAqB,CAAC;AAExC,MAAMC,KAAK,GAAGD,OAAO,CAAC,SAAS,CAAC;AAChC,MAAME,QAAQ,GAAGF,OAAO,CAAC,oBAAoB,CAAC;AAE9C,MAAMG,oBAAoB,GAAG,CAAC;;AAE9B;AACA;AACA;AACA,MAAMC,MAAM,CAAC;EACXC,WAAWA,CAACC,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAE;IACnC,IAAI,CAACC,UAAU,GAAGH,SAAS;IAC3B,IAAI,CAACI,OAAO,GAAGH,MAAM;IACrB,IAAIC,IAAI,KAAK,KAAK,EAAE;MAClB;MACA,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EACF;EAEA,IAAID,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACG,OAAO;EACrB;EAEA,IAAIJ,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACG,UAAU;EACxB;EAEA,IAAIE,MAAMA,CAAA,EAAG;IACX,OAAOT,QAAQ,CAACU,GAAG,CAAC,IAAI,CAACF,OAAO,CAAC;EACnC;EAEA,IAAIG,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACC,KAAK,KAAKC,SAAS,IAAI,IAAI,CAACD,KAAK,KAAKX,oBAAoB;EACxE;EAEA,IAAIK,IAAIA,CAAA,EAAG;IACT,OAAO;MACLQ,MAAM,EAAE,IAAI,CAACC,OAAO;MACpBC,GAAG,EAAE,IAAI,CAACA,GAAG;MACbJ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBK,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,YAAY,EAAE,IAAI,CAACA;IACrB,CAAC;EACH;EAEA,IAAIb,IAAIA,CAACc,KAAK,EAAE;IACd,IAAIA,KAAK,EAAE;MACT,IAAI,CAACJ,GAAG,GAAGI,KAAK,CAACJ,GAAG;MACpB,IAAI,CAACJ,KAAK,GAAGQ,KAAK,CAACR,KAAK,KAAKC,SAAS,GAAGO,KAAK,CAACR,KAAK,GAAGX,oBAAoB;MAC3E,IAAI,CAACkB,YAAY,GAAGC,KAAK,CAACD,YAAY;MACtC,IAAIC,KAAK,CAACH,KAAK,EAAE;QACf,IAAI,CAACA,KAAK,GAAGG,KAAK,CAACH,KAAK;MAC1B,CAAC,MAAM;QACL,IAAI,CAACA,KAAK,GAAG,CAAC,CAAC;MACjB;;MAEA;MACA,IAAI,CAACH,MAAM,GAAGM,KAAK,CAACN,MAAM;MAC1B,IAAI,CAACO,OAAO,GAAG,CAAC,CAACD,KAAK,CAACF,MAAM;IAC/B,CAAC,MAAM;MACL,OAAO,IAAI,CAACH,OAAO;MACnB,OAAO,IAAI,CAACO,IAAI;MAChB,OAAO,IAAI,CAACV,KAAK;MACjB,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC;MACf,IAAI,CAACE,YAAY,GAAG,CAAC;IACvB;EACF;EAEA,IAAII,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACR,OAAO,IAAI,IAAI,CAACA,OAAO,YAAYS,KAAK,GAAG,IAAI,CAACT,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,CAAC;EACtF;EAEA,IAAID,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACC,OAAO;EACrB;EAEA,IAAID,MAAMA,CAACM,KAAK,EAAE;IAChB,IAAIA,KAAK,KAAKP,SAAS,EAAE;MACvB,IAAI,CAACE,OAAO,GAAGK,KAAK;MACpB,IAAI,CAACG,OAAO,CAACE,OAAO,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QACpC,IAAI,CAACpB,UAAU,CAACqB,OAAO,CAACD,KAAK,GAAG,CAAC,EAAE,IAAI,CAACtB,MAAM,CAAC,CAACe,KAAK,GAAGM,IAAI;MAC9D,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACX,OAAO,GAAGF,SAAS;IAC1B;EACF;EAEA,IAAIG,GAAGA,CAAA,EAAG;IACR,OAAO,IAAI,CAACM,IAAI;EAClB;EAEA,IAAIN,GAAGA,CAACI,KAAK,EAAE;IACb,MAAMS,MAAM,GAAG,IAAI,CAACP,IAAI,IAAI,IAAI,CAACf,UAAU,CAACuB,YAAY,CAAC,IAAI,CAACR,IAAI,CAAC;IACnE,IAAIO,MAAM,KAAK,IAAI,EAAE;MACnB,IAAI,CAACtB,UAAU,CAACwB,eAAe,CAAC,IAAI,CAACT,IAAI,CAAC;IAC5C;IAEA,IAAI,CAACA,IAAI,GAAGF,KAAK;IACjB,IAAIA,KAAK,EAAE;MACT,IAAI,CAACb,UAAU,CAACyB,YAAY,CAAC,IAAI,CAACV,IAAI,EAAE,IAAI,CAAC;IAC/C;EACF;EAEA,IAAIJ,MAAMA,CAAA,EAAG;IACX,OAAO,CAAC,CAAC,IAAI,CAACG,OAAO;EACvB;EAEA,IAAIH,MAAMA,CAACE,KAAK,EAAE;IAChB,IAAI,CAACC,OAAO,GAAGD,KAAK;EACtB;EAEA,IAAID,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACc,aAAa,IAAI,CAAC;EAChC;EAEA,IAAId,YAAYA,CAACC,KAAK,EAAE;IACtB,IAAI,CAACa,aAAa,GAAGb,KAAK;EAC5B;EAEA,IAAIc,SAASA,CAAA,EAAG;IACd,OAAO,CAAC,EACN,IAAI,CAACD,aAAa,IAAI,IAAI,CAACA,aAAa,IAAI,IAAI,CAAC1B,UAAU,CAAC4B,UAAU,CAACC,eAAe,CACvF;EACH;EAEAC,QAAQA,CAAA,EAAG;IACT,OAAOC,IAAI,CAACC,SAAS,CAAC;MACpBvB,GAAG,EAAE,IAAI,CAACA,GAAG;MACbJ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBW,OAAO,EAAE,IAAI,CAACA,OAAO,CAACiB,MAAM,GAAG,IAAI,CAACjB,OAAO,GAAGV;IAChD,CAAC,CAAC;EACJ;EAEA4B,YAAYA,CAACC,KAAK,EAAE;IAClB,OACE,IAAI,CAAC9B,KAAK,KAAK8B,KAAK,CAAC9B,KAAK,IAC1B,IAAI,CAACM,MAAM,KAAKwB,KAAK,CAACxB,MAAM,IAC5B,IAAI,CAACC,YAAY,KAAKuB,KAAK,CAACvB,YAAY,IACxCtB,CAAC,CAAC8C,OAAO,CAAC,IAAI,CAAC1B,KAAK,EAAEyB,KAAK,CAACzB,KAAK,CAAC;EAEtC;EAEA,IAAI2B,SAASA,CAAA,EAAG;IACd,IAAI,IAAI,CAACjC,aAAa,EAAE;MACtB,OAAO,KAAK;IACd;IACA,IAAI,IAAI,CAACO,MAAM,EAAE;MACf,OAAO,KAAK;IACd;IACA,IAAI,IAAI,CAACC,YAAY,EAAE;MACrB,OAAO,KAAK;IACd;IACA,MAAM0B,CAAC,GAAG,IAAI,CAAC5B,KAAK;IACpB,IAAI4B,CAAC,KAAKA,CAAC,CAACC,IAAI,IAAID,CAAC,CAACE,MAAM,IAAIF,CAAC,CAACG,SAAS,IAAIH,CAAC,CAACI,MAAM,IAAIJ,CAAC,CAACK,IAAI,IAAIL,CAAC,CAACM,UAAU,CAAC,EAAE;MAClF,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC7B,OAAO,CAACiB,MAAM;EAC5B;EAEAa,QAAQA,CAACC,OAAO,EAAEC,QAAQ,EAAE;IAC1B,MAAMC,SAAS,GAAG,IAAI,CAACnD,MAAM;IAC7B,IAAI,CAACkD,QAAQ,EAAE;MACbA,QAAQ,GAAGD,OAAO;MAClBA,OAAO,GAAG,IAAI;IAChB;IACA,IAAI,CAAC/C,UAAU,CAACkD,OAAO,CAACH,OAAO,EAAE,CAACI,GAAG,EAAEC,SAAS,KAAK;MACnDJ,QAAQ,CAACG,GAAG,CAAC9B,OAAO,CAAC4B,SAAS,CAAC,EAAEG,SAAS,CAAC;IAC7C,CAAC,CAAC;EACJ;EAEA,IAAIC,MAAMA,CAAA,EAAG;IACX,MAAMC,CAAC,GAAG,EAAE;IACZ,IAAI,CAACR,QAAQ,CAAC,CAACS,IAAI,EAAEH,SAAS,KAAK;MACjC,IAAIG,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAKhE,KAAK,CAACiE,SAAS,CAACC,IAAI,EAAE;QAC9CJ,CAAC,CAACF,SAAS,CAAC,GAAGG,IAAI,CAAC1C,KAAK;MAC3B;IACF,CAAC,CAAC;IACF,OAAOyC,CAAC;EACV;EAEA,IAAID,MAAMA,CAACC,CAAC,EAAE;IACZ,IAAI,CAACA,CAAC,EAAE;MACN;IACF;IACA,MAAML,SAAS,GAAG,IAAI,CAACnD,MAAM;IAC7B,IAAI6D,MAAM,GAAG,CAAC;IACd,IAAIL,CAAC,CAACM,cAAc,CAAC,GAAG,CAAC,EAAE;MACzB;MACAD,MAAM,GAAG,CAAC;IACZ;IACAL,CAAC,CAACpC,OAAO,CAAC,CAACL,KAAK,EAAEO,KAAK,KAAK;MAC1B,IAAI,CAACpB,UAAU,CAACqB,OAAO,CAACD,KAAK,GAAGuC,MAAM,EAAEV,SAAS,CAAC,CAACpC,KAAK,GAAGA,KAAK;IAClE,CAAC,CAAC;EACJ;;EAEA;EACA;EACAgD,WAAWA,CAACC,IAAI,EAAEjD,KAAK,EAAE;IACvB,IAAI,CAACH,KAAK,CAACoD,IAAI,CAAC,GAAGjD,KAAK;IACxB,IAAI,CAACiC,QAAQ,CAACS,IAAI,IAAI;MACpBA,IAAI,CAACO,IAAI,CAAC,GAAGjD,KAAK;IACpB,CAAC,CAAC;IACF,OAAOA,KAAK;EACd;EAEA,IAAI2B,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAAC9B,KAAK,CAAC8B,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAAC3B,KAAK,EAAE;IAChB,IAAI,CAACgD,WAAW,CAAC,QAAQ,EAAEhD,KAAK,CAAC;EACnC;EAEA,IAAI0B,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAAC7B,KAAK,CAAC6B,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAAC1B,KAAK,EAAE;IACd,IAAI,CAACgD,WAAW,CAAC,MAAM,EAAEhD,KAAK,CAAC;EACjC;EAEA,IAAI4B,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC/B,KAAK,CAAC+B,SAAS;EAC7B;EAEA,IAAIA,SAASA,CAAC5B,KAAK,EAAE;IACnB,IAAI,CAACgD,WAAW,CAAC,WAAW,EAAEhD,KAAK,CAAC;EACtC;EAEA,IAAI+B,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAAClC,KAAK,CAACkC,UAAU;EAC9B;EAEA,IAAIA,UAAUA,CAAC/B,KAAK,EAAE;IACpB,IAAI,CAACgD,WAAW,CAAC,YAAY,EAAEhD,KAAK,CAAC;EACvC;EAEA,IAAI6B,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAAChC,KAAK,CAACgC,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAAC7B,KAAK,EAAE;IAChB,IAAI,CAACgD,WAAW,CAAC,QAAQ,EAAEhD,KAAK,CAAC;EACnC;EAEA,IAAI8B,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACjC,KAAK,CAACiC,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAAC9B,KAAK,EAAE;IACd,IAAI,CAACgD,WAAW,CAAC,MAAM,EAAEhD,KAAK,CAAC;EACjC;;EAEA;EACA;;EAEA,OAAOkD,OAAOA,CAACC,OAAO,EAAE;IACtB;IACA,MAAMC,IAAI,GAAG,EAAE;IACf,IAAIC,GAAG,GAAG,IAAI;IACd,IAAIF,OAAO,EAAE;MACXA,OAAO,CAAC9C,OAAO,CAAC,CAACI,MAAM,EAAEF,KAAK,KAAK;QACjC,IAAIE,MAAM,CAACe,SAAS,EAAE;UACpB,IAAI6B,GAAG,EAAE;YACPA,GAAG,GAAG,IAAI;UACZ;QACF,CAAC,MAAM,IAAI,CAACA,GAAG,IAAI,CAAC5C,MAAM,CAACY,YAAY,CAACgC,GAAG,CAAC,EAAE;UAC5CA,GAAG,GAAG;YACJC,GAAG,EAAE/C,KAAK,GAAG,CAAC;YACdgD,GAAG,EAAEhD,KAAK,GAAG,CAAC;YACdf,KAAK,EAAEiB,MAAM,CAACjB,KAAK,KAAKC,SAAS,GAAGgB,MAAM,CAACjB,KAAK,GAAGX,oBAAoB;YACvEgB,KAAK,EAAEY,MAAM,CAACZ,KAAK;YACnBN,aAAa,EAAEkB,MAAM,CAAClB,aAAa;YACnCO,MAAM,EAAEW,MAAM,CAACX,MAAM;YACrBC,YAAY,EAAEU,MAAM,CAACV,YAAY;YACjCe,SAAS,EAAEL,MAAM,CAACK;UACpB,CAAC;UACDsC,IAAI,CAACI,IAAI,CAACH,GAAG,CAAC;QAChB,CAAC,MAAM;UACLA,GAAG,CAACE,GAAG,GAAGhD,KAAK,GAAG,CAAC;QACrB;MACF,CAAC,CAAC;IACJ;IACA,OAAO6C,IAAI,CAAChC,MAAM,GAAGgC,IAAI,GAAG3D,SAAS;EACvC;EAEA,OAAOgE,SAASA,CAACzE,SAAS,EAAEoE,IAAI,EAAE;IAChCA,IAAI,GAAGA,IAAI,IAAI,EAAE;IACjB,MAAMD,OAAO,GAAG,EAAE;IAClB,IAAIO,KAAK,GAAG,CAAC;IACb,IAAInD,KAAK,GAAG,CAAC;IACb;AACJ;AACA;AACA;IACI6C,IAAI,GAAGA,IAAI,CAACO,IAAI,CAAC,UAASC,GAAG,EAAEC,IAAI,EAAG;MACpC,OAAOD,GAAG,CAACN,GAAG,GAAGO,IAAI,CAACP,GAAG;IAC3B,CAAC,CAAC;IACF,OAAO/C,KAAK,GAAG6C,IAAI,CAAChC,MAAM,EAAE;MAC1B,MAAMiC,GAAG,GAAGD,IAAI,CAAC7C,KAAK,EAAE,CAAC;MACzB,OAAOmD,KAAK,GAAGL,GAAG,CAACC,GAAG,EAAE;QACtBH,OAAO,CAACK,IAAI,CAAC,IAAI1E,MAAM,CAACE,SAAS,EAAE0E,KAAK,EAAE,CAAC,CAAC;MAC9C;MACA,OAAOA,KAAK,IAAIL,GAAG,CAACE,GAAG,EAAE;QACvBJ,OAAO,CAACK,IAAI,CAAC,IAAI1E,MAAM,CAACE,SAAS,EAAE0E,KAAK,EAAE,EAAEL,GAAG,CAAC,CAAC;MACnD;IACF;IACA,OAAOF,OAAO,CAAC/B,MAAM,GAAG+B,OAAO,GAAG,IAAI;EACxC;AACF;AAEAW,MAAM,CAACC,OAAO,GAAGjF,MAAM","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ class DataValidations {
4
+ constructor(model) {
5
+ this.model = model || {};
6
+ }
7
+ add(address, validation) {
8
+ return this.model[address] = validation;
9
+ }
10
+ find(address) {
11
+ return this.model[address];
12
+ }
13
+ remove(address) {
14
+ this.model[address] = undefined;
15
+ }
16
+ }
17
+ module.exports = DataValidations;
18
+ //# sourceMappingURL=data-validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-validations.js","names":["DataValidations","constructor","model","add","address","validation","find","remove","undefined","module","exports"],"sources":["../../../lib/doc/data-validations.js"],"sourcesContent":["class DataValidations {\n constructor(model) {\n this.model = model || {};\n }\n\n add(address, validation) {\n return (this.model[address] = validation);\n }\n\n find(address) {\n return this.model[address];\n }\n\n remove(address) {\n this.model[address] = undefined;\n }\n}\n\nmodule.exports = DataValidations;\n"],"mappings":";;AAAA,MAAMA,eAAe,CAAC;EACpBC,WAAWA,CAACC,KAAK,EAAE;IACjB,IAAI,CAACA,KAAK,GAAGA,KAAK,IAAI,CAAC,CAAC;EAC1B;EAEAC,GAAGA,CAACC,OAAO,EAAEC,UAAU,EAAE;IACvB,OAAQ,IAAI,CAACH,KAAK,CAACE,OAAO,CAAC,GAAGC,UAAU;EAC1C;EAEAC,IAAIA,CAACF,OAAO,EAAE;IACZ,OAAO,IAAI,CAACF,KAAK,CAACE,OAAO,CAAC;EAC5B;EAEAG,MAAMA,CAACH,OAAO,EAAE;IACd,IAAI,CAACF,KAAK,CAACE,OAAO,CAAC,GAAGI,SAAS;EACjC;AACF;AAEAC,MAAM,CAACC,OAAO,GAAGV,eAAe","ignoreList":[]}
@@ -0,0 +1,171 @@
1
+ 'use strict';
2
+
3
+ const _ = require('../utils/under-dash');
4
+ const colCache = require('../utils/col-cache');
5
+ const CellMatrix = require('../utils/cell-matrix');
6
+ const Range = require('./range');
7
+ const rangeRegexp = /[$](\w+)[$](\d+)(:[$](\w+)[$](\d+))?/;
8
+ class DefinedNames {
9
+ constructor() {
10
+ this.matrixMap = {};
11
+ }
12
+ getMatrix(name) {
13
+ const matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix());
14
+ return matrix;
15
+ }
16
+
17
+ // add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2
18
+ add(locStr, name) {
19
+ const location = colCache.decodeEx(locStr);
20
+ this.addEx(location, name);
21
+ }
22
+ addEx(location, name) {
23
+ const matrix = this.getMatrix(name);
24
+ if (location.top) {
25
+ for (let col = location.left; col <= location.right; col++) {
26
+ for (let row = location.top; row <= location.bottom; row++) {
27
+ const address = {
28
+ sheetName: location.sheetName,
29
+ address: colCache.n2l(col) + row,
30
+ row,
31
+ col
32
+ };
33
+ matrix.addCellEx(address);
34
+ }
35
+ }
36
+ } else {
37
+ matrix.addCellEx(location);
38
+ }
39
+ }
40
+ remove(locStr, name) {
41
+ const location = colCache.decodeEx(locStr);
42
+ this.removeEx(location, name);
43
+ }
44
+ removeEx(location, name) {
45
+ const matrix = this.getMatrix(name);
46
+ matrix.removeCellEx(location);
47
+ }
48
+ removeAllNames(location) {
49
+ _.each(this.matrixMap, matrix => {
50
+ matrix.removeCellEx(location);
51
+ });
52
+ }
53
+ forEach(callback) {
54
+ _.each(this.matrixMap, (matrix, name) => {
55
+ matrix.forEach(cell => {
56
+ callback(name, cell);
57
+ });
58
+ });
59
+ }
60
+
61
+ // get all the names of a cell
62
+ getNames(addressStr) {
63
+ return this.getNamesEx(colCache.decodeEx(addressStr));
64
+ }
65
+ getNamesEx(address) {
66
+ return _.map(this.matrixMap, (matrix, name) => matrix.findCellEx(address) && name).filter(Boolean);
67
+ }
68
+ _explore(matrix, cell) {
69
+ cell.mark = false;
70
+ const sheetName = cell.sheetName;
71
+ const range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName);
72
+ let x;
73
+ let y;
74
+
75
+ // grow vertical - only one col to worry about
76
+ function vGrow(yy, edge) {
77
+ const c = matrix.findCellAt(sheetName, yy, cell.col);
78
+ if (!c || !c.mark) {
79
+ return false;
80
+ }
81
+ range[edge] = yy;
82
+ c.mark = false;
83
+ return true;
84
+ }
85
+ for (y = cell.row - 1; vGrow(y, 'top'); y--);
86
+ for (y = cell.row + 1; vGrow(y, 'bottom'); y++);
87
+
88
+ // grow horizontal - ensure all rows can grow
89
+ function hGrow(xx, edge) {
90
+ const cells = [];
91
+ for (y = range.top; y <= range.bottom; y++) {
92
+ const c = matrix.findCellAt(sheetName, y, xx);
93
+ if (c && c.mark) {
94
+ cells.push(c);
95
+ } else {
96
+ return false;
97
+ }
98
+ }
99
+ range[edge] = xx;
100
+ for (let i = 0; i < cells.length; i++) {
101
+ cells[i].mark = false;
102
+ }
103
+ return true;
104
+ }
105
+ for (x = cell.col - 1; hGrow(x, 'left'); x--);
106
+ for (x = cell.col + 1; hGrow(x, 'right'); x++);
107
+ return range;
108
+ }
109
+ getRanges(name, matrix) {
110
+ matrix = matrix || this.matrixMap[name];
111
+ if (!matrix) {
112
+ return {
113
+ name,
114
+ ranges: []
115
+ };
116
+ }
117
+
118
+ // mark and sweep!
119
+ matrix.forEach(cell => {
120
+ cell.mark = true;
121
+ });
122
+ const ranges = matrix.map(cell => cell.mark && this._explore(matrix, cell)).filter(Boolean).map(range => range.$shortRange);
123
+ return {
124
+ name,
125
+ ranges
126
+ };
127
+ }
128
+ normaliseMatrix(matrix, sheetName) {
129
+ // some of the cells might have shifted on specified sheet
130
+ // need to reassign rows, cols
131
+ matrix.forEachInSheet(sheetName, (cell, row, col) => {
132
+ if (cell) {
133
+ if (cell.row !== row || cell.col !== col) {
134
+ cell.row = row;
135
+ cell.col = col;
136
+ cell.address = colCache.n2l(col) + row;
137
+ }
138
+ }
139
+ });
140
+ }
141
+ spliceRows(sheetName, start, numDelete, numInsert) {
142
+ _.each(this.matrixMap, matrix => {
143
+ matrix.spliceRows(sheetName, start, numDelete, numInsert);
144
+ this.normaliseMatrix(matrix, sheetName);
145
+ });
146
+ }
147
+ spliceColumns(sheetName, start, numDelete, numInsert) {
148
+ _.each(this.matrixMap, matrix => {
149
+ matrix.spliceColumns(sheetName, start, numDelete, numInsert);
150
+ this.normaliseMatrix(matrix, sheetName);
151
+ });
152
+ }
153
+ get model() {
154
+ // To get names per cell - just iterate over all names finding cells if they exist
155
+ return _.map(this.matrixMap, (matrix, name) => this.getRanges(name, matrix)).filter(definedName => definedName.ranges.length);
156
+ }
157
+ set model(value) {
158
+ // value is [ { name, ranges }, ... ]
159
+ const matrixMap = this.matrixMap = {};
160
+ value.forEach(definedName => {
161
+ const matrix = matrixMap[definedName.name] = new CellMatrix();
162
+ definedName.ranges.forEach(rangeStr => {
163
+ if (rangeRegexp.test(rangeStr.split('!').pop() || '')) {
164
+ matrix.addCell(rangeStr);
165
+ }
166
+ });
167
+ });
168
+ }
169
+ }
170
+ module.exports = DefinedNames;
171
+ //# sourceMappingURL=defined-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defined-names.js","names":["_","require","colCache","CellMatrix","Range","rangeRegexp","DefinedNames","constructor","matrixMap","getMatrix","name","matrix","add","locStr","location","decodeEx","addEx","top","col","left","right","row","bottom","address","sheetName","n2l","addCellEx","remove","removeEx","removeCellEx","removeAllNames","each","forEach","callback","cell","getNames","addressStr","getNamesEx","map","findCellEx","filter","Boolean","_explore","mark","range","x","y","vGrow","yy","edge","c","findCellAt","hGrow","xx","cells","push","i","length","getRanges","ranges","$shortRange","normaliseMatrix","forEachInSheet","spliceRows","start","numDelete","numInsert","spliceColumns","model","definedName","value","rangeStr","test","split","pop","addCell","module","exports"],"sources":["../../../lib/doc/defined-names.js"],"sourcesContent":["'use strict';\n\nconst _ = require('../utils/under-dash');\nconst colCache = require('../utils/col-cache');\nconst CellMatrix = require('../utils/cell-matrix');\nconst Range = require('./range');\n\nconst rangeRegexp = /[$](\\w+)[$](\\d+)(:[$](\\w+)[$](\\d+))?/;\n\nclass DefinedNames {\n constructor() {\n this.matrixMap = {};\n }\n\n getMatrix(name) {\n const matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix());\n return matrix;\n }\n\n // add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2\n add(locStr, name) {\n const location = colCache.decodeEx(locStr);\n this.addEx(location, name);\n }\n\n addEx(location, name) {\n const matrix = this.getMatrix(name);\n if (location.top) {\n for (let col = location.left; col <= location.right; col++) {\n for (let row = location.top; row <= location.bottom; row++) {\n const address = {\n sheetName: location.sheetName,\n address: colCache.n2l(col) + row,\n row,\n col,\n };\n\n matrix.addCellEx(address);\n }\n }\n } else {\n matrix.addCellEx(location);\n }\n }\n\n remove(locStr, name) {\n const location = colCache.decodeEx(locStr);\n this.removeEx(location, name);\n }\n\n removeEx(location, name) {\n const matrix = this.getMatrix(name);\n matrix.removeCellEx(location);\n }\n\n removeAllNames(location) {\n _.each(this.matrixMap, matrix => {\n matrix.removeCellEx(location);\n });\n }\n\n forEach(callback) {\n _.each(this.matrixMap, (matrix, name) => {\n matrix.forEach(cell => {\n callback(name, cell);\n });\n });\n }\n\n // get all the names of a cell\n getNames(addressStr) {\n return this.getNamesEx(colCache.decodeEx(addressStr));\n }\n\n getNamesEx(address) {\n return _.map(this.matrixMap, (matrix, name) => matrix.findCellEx(address) && name).filter(\n Boolean\n );\n }\n\n _explore(matrix, cell) {\n cell.mark = false;\n const {sheetName} = cell;\n\n const range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName);\n let x;\n let y;\n\n // grow vertical - only one col to worry about\n function vGrow(yy, edge) {\n const c = matrix.findCellAt(sheetName, yy, cell.col);\n if (!c || !c.mark) {\n return false;\n }\n range[edge] = yy;\n c.mark = false;\n return true;\n }\n for (y = cell.row - 1; vGrow(y, 'top'); y--);\n for (y = cell.row + 1; vGrow(y, 'bottom'); y++);\n\n // grow horizontal - ensure all rows can grow\n function hGrow(xx, edge) {\n const cells = [];\n for (y = range.top; y <= range.bottom; y++) {\n const c = matrix.findCellAt(sheetName, y, xx);\n if (c && c.mark) {\n cells.push(c);\n } else {\n return false;\n }\n }\n range[edge] = xx;\n for (let i = 0; i < cells.length; i++) {\n cells[i].mark = false;\n }\n return true;\n }\n for (x = cell.col - 1; hGrow(x, 'left'); x--);\n for (x = cell.col + 1; hGrow(x, 'right'); x++);\n\n return range;\n }\n\n getRanges(name, matrix) {\n matrix = matrix || this.matrixMap[name];\n\n if (!matrix) {\n return {name, ranges: []};\n }\n\n // mark and sweep!\n matrix.forEach(cell => {\n cell.mark = true;\n });\n const ranges = matrix\n .map(cell => cell.mark && this._explore(matrix, cell))\n .filter(Boolean)\n .map(range => range.$shortRange);\n\n return {\n name,\n ranges,\n };\n }\n\n normaliseMatrix(matrix, sheetName) {\n // some of the cells might have shifted on specified sheet\n // need to reassign rows, cols\n matrix.forEachInSheet(sheetName, (cell, row, col) => {\n if (cell) {\n if (cell.row !== row || cell.col !== col) {\n cell.row = row;\n cell.col = col;\n cell.address = colCache.n2l(col) + row;\n }\n }\n });\n }\n\n spliceRows(sheetName, start, numDelete, numInsert) {\n _.each(this.matrixMap, matrix => {\n matrix.spliceRows(sheetName, start, numDelete, numInsert);\n this.normaliseMatrix(matrix, sheetName);\n });\n }\n\n spliceColumns(sheetName, start, numDelete, numInsert) {\n _.each(this.matrixMap, matrix => {\n matrix.spliceColumns(sheetName, start, numDelete, numInsert);\n this.normaliseMatrix(matrix, sheetName);\n });\n }\n\n get model() {\n // To get names per cell - just iterate over all names finding cells if they exist\n return _.map(this.matrixMap, (matrix, name) => this.getRanges(name, matrix)).filter(\n definedName => definedName.ranges.length\n );\n }\n\n set model(value) {\n // value is [ { name, ranges }, ... ]\n const matrixMap = (this.matrixMap = {});\n value.forEach(definedName => {\n const matrix = (matrixMap[definedName.name] = new CellMatrix());\n definedName.ranges.forEach(rangeStr => {\n if (rangeRegexp.test(rangeStr.split('!').pop() || '')) {\n matrix.addCell(rangeStr);\n }\n });\n });\n }\n}\n\nmodule.exports = DefinedNames;\n"],"mappings":"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","ignoreList":[]}