@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,515 @@
1
+ "use strict";
2
+
3
+ const _ = require('../../../utils/under-dash');
4
+ const colCache = require('../../../utils/col-cache');
5
+ const XmlStream = require('../../../utils/xml-stream');
6
+ const RelType = require('../../rel-type');
7
+ const Merges = require('./merges');
8
+ const BaseXform = require('../base-xform');
9
+ const ListXform = require('../list-xform');
10
+ const RowXform = require('./row-xform');
11
+ const ColXform = require('./col-xform');
12
+ const DimensionXform = require('./dimension-xform');
13
+ const HyperlinkXform = require('./hyperlink-xform');
14
+ const MergeCellXform = require('./merge-cell-xform');
15
+ const DataValidationsXform = require('./data-validations-xform');
16
+ const SheetPropertiesXform = require('./sheet-properties-xform');
17
+ const SheetFormatPropertiesXform = require('./sheet-format-properties-xform');
18
+ const SheetViewXform = require('./sheet-view-xform');
19
+ const SheetProtectionXform = require('./sheet-protection-xform');
20
+ const PageMarginsXform = require('./page-margins-xform');
21
+ const PageSetupXform = require('./page-setup-xform');
22
+ const PrintOptionsXform = require('./print-options-xform');
23
+ const AutoFilterXform = require('./auto-filter-xform');
24
+ const PictureXform = require('./picture-xform');
25
+ const DrawingXform = require('./drawing-xform');
26
+ const TablePartXform = require('./table-part-xform');
27
+ const RowBreaksXform = require('./row-breaks-xform');
28
+ const HeaderFooterXform = require('./header-footer-xform');
29
+ const ConditionalFormattingsXform = require('./cf/conditional-formattings-xform');
30
+ const ExtListXform = require('./ext-lst-xform');
31
+ const mergeRule = (rule, extRule) => {
32
+ Object.keys(extRule).forEach(key => {
33
+ const value = rule[key];
34
+ const extValue = extRule[key];
35
+ if (value === undefined && extValue !== undefined) {
36
+ rule[key] = extValue;
37
+ }
38
+ });
39
+ };
40
+ const mergeConditionalFormattings = (model, extModel) => {
41
+ // conditional formattings are rendered in worksheet.conditionalFormatting and also in
42
+ // worksheet.extLst.ext.x14:conditionalFormattings
43
+ // some (e.g. dataBar) are even spread across both!
44
+ if (!extModel || !extModel.length) {
45
+ return model;
46
+ }
47
+ if (!model || !model.length) {
48
+ return extModel;
49
+ }
50
+
51
+ // index model rules by x14Id
52
+ const cfMap = {};
53
+ const ruleMap = {};
54
+ model.forEach(cf => {
55
+ cfMap[cf.ref] = cf;
56
+ cf.rules.forEach(rule => {
57
+ const x14Id = rule.x14Id;
58
+ if (x14Id) {
59
+ ruleMap[x14Id] = rule;
60
+ }
61
+ });
62
+ });
63
+ extModel.forEach(extCf => {
64
+ extCf.rules.forEach(extRule => {
65
+ const rule = ruleMap[extRule.x14Id];
66
+ if (rule) {
67
+ // merge with matching rule
68
+ mergeRule(rule, extRule);
69
+ } else if (cfMap[extCf.ref]) {
70
+ // reuse existing cf ref
71
+ cfMap[extCf.ref].rules.push(extRule);
72
+ } else {
73
+ // create new cf
74
+ model.push({
75
+ ref: extCf.ref,
76
+ rules: [extRule]
77
+ });
78
+ }
79
+ });
80
+ });
81
+
82
+ // need to cope with rules in extModel that don't exist in model
83
+ return model;
84
+ };
85
+ class WorkSheetXform extends BaseXform {
86
+ constructor(options) {
87
+ super();
88
+ const _ref = options || {},
89
+ maxRows = _ref.maxRows,
90
+ maxCols = _ref.maxCols,
91
+ ignoreNodes = _ref.ignoreNodes;
92
+ this.ignoreNodes = ignoreNodes || [];
93
+ this.map = {
94
+ sheetPr: new SheetPropertiesXform(),
95
+ dimension: new DimensionXform(),
96
+ sheetViews: new ListXform({
97
+ tag: 'sheetViews',
98
+ count: false,
99
+ childXform: new SheetViewXform()
100
+ }),
101
+ sheetFormatPr: new SheetFormatPropertiesXform(),
102
+ cols: new ListXform({
103
+ tag: 'cols',
104
+ count: false,
105
+ childXform: new ColXform()
106
+ }),
107
+ sheetData: new ListXform({
108
+ tag: 'sheetData',
109
+ count: false,
110
+ empty: true,
111
+ childXform: new RowXform({
112
+ maxItems: maxCols
113
+ }),
114
+ maxItems: maxRows
115
+ }),
116
+ autoFilter: new AutoFilterXform(),
117
+ mergeCells: new ListXform({
118
+ tag: 'mergeCells',
119
+ count: true,
120
+ childXform: new MergeCellXform()
121
+ }),
122
+ rowBreaks: new RowBreaksXform(),
123
+ hyperlinks: new ListXform({
124
+ tag: 'hyperlinks',
125
+ count: false,
126
+ childXform: new HyperlinkXform()
127
+ }),
128
+ pageMargins: new PageMarginsXform(),
129
+ dataValidations: new DataValidationsXform(),
130
+ pageSetup: new PageSetupXform(),
131
+ headerFooter: new HeaderFooterXform(),
132
+ printOptions: new PrintOptionsXform(),
133
+ picture: new PictureXform(),
134
+ drawing: new DrawingXform(),
135
+ sheetProtection: new SheetProtectionXform(),
136
+ tableParts: new ListXform({
137
+ tag: 'tableParts',
138
+ count: true,
139
+ childXform: new TablePartXform()
140
+ }),
141
+ conditionalFormatting: new ConditionalFormattingsXform(),
142
+ extLst: new ExtListXform()
143
+ };
144
+ }
145
+ prepare(model, options) {
146
+ options.merges = new Merges();
147
+ model.hyperlinks = options.hyperlinks = [];
148
+ model.comments = options.comments = [];
149
+ options.formulae = {};
150
+ options.siFormulae = 0;
151
+ this.map.cols.prepare(model.cols, options);
152
+ this.map.sheetData.prepare(model.rows, options);
153
+ this.map.conditionalFormatting.prepare(model.conditionalFormattings, options);
154
+ model.mergeCells = options.merges.mergeCells;
155
+
156
+ // prepare relationships
157
+ const rels = model.rels = [];
158
+ function nextRid(r) {
159
+ return "rId".concat(r.length + 1);
160
+ }
161
+ model.hyperlinks.forEach(hyperlink => {
162
+ const rId = nextRid(rels);
163
+ hyperlink.rId = rId;
164
+ rels.push({
165
+ Id: rId,
166
+ Type: RelType.Hyperlink,
167
+ Target: hyperlink.target,
168
+ TargetMode: 'External'
169
+ });
170
+ });
171
+
172
+ // prepare comment relationships
173
+ if (model.comments.length > 0) {
174
+ const comment = {
175
+ Id: nextRid(rels),
176
+ Type: RelType.Comments,
177
+ Target: "../comments".concat(model.id, ".xml")
178
+ };
179
+ rels.push(comment);
180
+ const vmlDrawing = {
181
+ Id: nextRid(rels),
182
+ Type: RelType.VmlDrawing,
183
+ Target: "../drawings/vmlDrawing".concat(model.id, ".vml")
184
+ };
185
+ rels.push(vmlDrawing);
186
+ model.comments.forEach(item => {
187
+ item.refAddress = colCache.decodeAddress(item.ref);
188
+ });
189
+ options.commentRefs.push({
190
+ commentName: "comments".concat(model.id),
191
+ vmlDrawing: "vmlDrawing".concat(model.id)
192
+ });
193
+ }
194
+ const drawingRelsHash = [];
195
+ let bookImage;
196
+ model.media.forEach(medium => {
197
+ if (medium.type === 'background') {
198
+ const rId = nextRid(rels);
199
+ bookImage = options.media[medium.imageId];
200
+ rels.push({
201
+ Id: rId,
202
+ Type: RelType.Image,
203
+ Target: "../media/".concat(bookImage.name, ".").concat(bookImage.extension)
204
+ });
205
+ model.background = {
206
+ rId
207
+ };
208
+ model.image = options.media[medium.imageId];
209
+ } else if (medium.type === 'image') {
210
+ let drawing = model.drawing;
211
+ bookImage = options.media[medium.imageId];
212
+ if (!drawing) {
213
+ drawing = model.drawing = {
214
+ rId: nextRid(rels),
215
+ name: "drawing".concat(++options.drawingsCount),
216
+ anchors: [],
217
+ rels: []
218
+ };
219
+ options.drawings.push(drawing);
220
+ rels.push({
221
+ Id: drawing.rId,
222
+ Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
223
+ Target: "../drawings/".concat(drawing.name, ".xml")
224
+ });
225
+ }
226
+ let rIdImage = this.preImageId === medium.imageId ? drawingRelsHash[medium.imageId] : drawingRelsHash[drawing.rels.length];
227
+ if (!rIdImage) {
228
+ rIdImage = nextRid(drawing.rels);
229
+ drawingRelsHash[drawing.rels.length] = rIdImage;
230
+ drawing.rels.push({
231
+ Id: rIdImage,
232
+ Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
233
+ Target: "../media/".concat(bookImage.name, ".").concat(bookImage.extension)
234
+ });
235
+ }
236
+ const anchor = {
237
+ picture: {
238
+ rId: rIdImage
239
+ },
240
+ range: medium.range
241
+ };
242
+ if (medium.hyperlinks && medium.hyperlinks.hyperlink) {
243
+ const rIdHyperLink = nextRid(drawing.rels);
244
+ drawingRelsHash[drawing.rels.length] = rIdHyperLink;
245
+ anchor.picture.hyperlinks = {
246
+ tooltip: medium.hyperlinks.tooltip,
247
+ rId: rIdHyperLink
248
+ };
249
+ drawing.rels.push({
250
+ Id: rIdHyperLink,
251
+ Type: RelType.Hyperlink,
252
+ Target: medium.hyperlinks.hyperlink,
253
+ TargetMode: 'External'
254
+ });
255
+ }
256
+ this.preImageId = medium.imageId;
257
+ drawing.anchors.push(anchor);
258
+ }
259
+ });
260
+
261
+ // prepare tables
262
+ model.tables.forEach(table => {
263
+ // relationships
264
+ const rId = nextRid(rels);
265
+ table.rId = rId;
266
+ rels.push({
267
+ Id: rId,
268
+ Type: RelType.Table,
269
+ Target: "../tables/".concat(table.target)
270
+ });
271
+
272
+ // dynamic styles
273
+ table.columns.forEach(column => {
274
+ const style = column.style;
275
+ if (style) {
276
+ column.dxfId = options.styles.addDxfStyle(style);
277
+ }
278
+ });
279
+ });
280
+
281
+ // prepare pivot tables
282
+ if ((model.pivotTables || []).length) {
283
+ rels.push({
284
+ Id: nextRid(rels),
285
+ Type: RelType.PivotTable,
286
+ Target: '../pivotTables/pivotTable1.xml'
287
+ });
288
+ }
289
+
290
+ // prepare ext items
291
+ this.map.extLst.prepare(model, options);
292
+ }
293
+ render(xmlStream, model) {
294
+ xmlStream.openXml(XmlStream.StdDocAttributes);
295
+ xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES);
296
+ const sheetFormatPropertiesModel = model.properties ? {
297
+ defaultRowHeight: model.properties.defaultRowHeight,
298
+ dyDescent: model.properties.dyDescent,
299
+ outlineLevelCol: model.properties.outlineLevelCol,
300
+ outlineLevelRow: model.properties.outlineLevelRow
301
+ } : undefined;
302
+ if (model.properties && model.properties.defaultColWidth) {
303
+ sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth;
304
+ }
305
+ const sheetPropertiesModel = {
306
+ outlineProperties: model.properties && model.properties.outlineProperties,
307
+ tabColor: model.properties && model.properties.tabColor,
308
+ pageSetup: model.pageSetup && model.pageSetup.fitToPage ? {
309
+ fitToPage: model.pageSetup.fitToPage
310
+ } : undefined
311
+ };
312
+ const pageMarginsModel = model.pageSetup && model.pageSetup.margins;
313
+ const printOptionsModel = {
314
+ showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders,
315
+ showGridLines: model.pageSetup && model.pageSetup.showGridLines,
316
+ horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered,
317
+ verticalCentered: model.pageSetup && model.pageSetup.verticalCentered
318
+ };
319
+ const sheetProtectionModel = model.sheetProtection;
320
+ this.map.sheetPr.render(xmlStream, sheetPropertiesModel);
321
+ this.map.dimension.render(xmlStream, model.dimensions);
322
+ this.map.sheetViews.render(xmlStream, model.views);
323
+ this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel);
324
+ this.map.cols.render(xmlStream, model.cols);
325
+ this.map.sheetData.render(xmlStream, model.rows);
326
+ this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter
327
+ this.map.autoFilter.render(xmlStream, model.autoFilter);
328
+ this.map.mergeCells.render(xmlStream, model.mergeCells);
329
+ this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations
330
+ this.map.dataValidations.render(xmlStream, model.dataValidations);
331
+
332
+ // For some reason hyperlinks have to be after the data validations
333
+ this.map.hyperlinks.render(xmlStream, model.hyperlinks);
334
+ this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins
335
+ this.map.pageMargins.render(xmlStream, pageMarginsModel);
336
+ this.map.pageSetup.render(xmlStream, model.pageSetup);
337
+ this.map.headerFooter.render(xmlStream, model.headerFooter);
338
+ this.map.rowBreaks.render(xmlStream, model.rowBreaks);
339
+ this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks
340
+ this.map.picture.render(xmlStream, model.background); // Note: must be after drawing
341
+ this.map.tableParts.render(xmlStream, model.tables);
342
+ this.map.extLst.render(xmlStream, model);
343
+ if (model.rels) {
344
+ // add a <legacyDrawing /> node for each comment
345
+ model.rels.forEach(rel => {
346
+ if (rel.Type === RelType.VmlDrawing) {
347
+ xmlStream.leafNode('legacyDrawing', {
348
+ 'r:id': rel.Id
349
+ });
350
+ }
351
+ });
352
+ }
353
+ xmlStream.closeNode();
354
+ }
355
+ parseOpen(node) {
356
+ if (this.parser) {
357
+ this.parser.parseOpen(node);
358
+ return true;
359
+ }
360
+ if (node.name === 'worksheet') {
361
+ _.each(this.map, xform => {
362
+ xform.reset();
363
+ });
364
+ return true;
365
+ }
366
+ if (this.map[node.name] && !this.ignoreNodes.includes(node.name)) {
367
+ this.parser = this.map[node.name];
368
+ this.parser.parseOpen(node);
369
+ }
370
+ return true;
371
+ }
372
+ parseText(text) {
373
+ if (this.parser) {
374
+ this.parser.parseText(text);
375
+ }
376
+ }
377
+ parseClose(name) {
378
+ if (this.parser) {
379
+ if (!this.parser.parseClose(name)) {
380
+ this.parser = undefined;
381
+ }
382
+ return true;
383
+ }
384
+ switch (name) {
385
+ case 'worksheet':
386
+ {
387
+ const properties = this.map.sheetFormatPr.model || {};
388
+ if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) {
389
+ properties.tabColor = this.map.sheetPr.model.tabColor;
390
+ }
391
+ if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) {
392
+ properties.outlineProperties = this.map.sheetPr.model.outlineProperties;
393
+ }
394
+ const sheetProperties = {
395
+ fitToPage: this.map.sheetPr.model && this.map.sheetPr.model.pageSetup && this.map.sheetPr.model.pageSetup.fitToPage || false,
396
+ margins: this.map.pageMargins.model
397
+ };
398
+ const pageSetup = Object.assign(sheetProperties, this.map.pageSetup.model, this.map.printOptions.model);
399
+ const conditionalFormattings = mergeConditionalFormattings(this.map.conditionalFormatting.model, this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']);
400
+ this.model = {
401
+ dimensions: this.map.dimension.model,
402
+ cols: this.map.cols.model,
403
+ rows: this.map.sheetData.model,
404
+ mergeCells: this.map.mergeCells.model,
405
+ hyperlinks: this.map.hyperlinks.model,
406
+ dataValidations: this.map.dataValidations.model,
407
+ properties,
408
+ views: this.map.sheetViews.model,
409
+ pageSetup,
410
+ headerFooter: this.map.headerFooter.model,
411
+ background: this.map.picture.model,
412
+ drawing: this.map.drawing.model,
413
+ tables: this.map.tableParts.model,
414
+ conditionalFormattings
415
+ };
416
+ if (this.map.autoFilter.model) {
417
+ this.model.autoFilter = this.map.autoFilter.model;
418
+ }
419
+ if (this.map.sheetProtection.model) {
420
+ this.model.sheetProtection = this.map.sheetProtection.model;
421
+ }
422
+ return false;
423
+ }
424
+ default:
425
+ // not quite sure how we get here!
426
+ return true;
427
+ }
428
+ }
429
+ reconcile(model, options) {
430
+ // options.merges = new Merges();
431
+ // options.merges.reconcile(model.mergeCells, model.rows);
432
+ const rels = (model.relationships || []).reduce((h, rel) => {
433
+ h[rel.Id] = rel;
434
+ if (rel.Type === RelType.Comments) {
435
+ model.comments = options.comments[rel.Target].comments;
436
+ }
437
+ if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) {
438
+ const vmlComment = options.vmlDrawings[rel.Target].comments;
439
+ model.comments.forEach((comment, index) => {
440
+ comment.note = Object.assign({}, comment.note, vmlComment[index]);
441
+ });
442
+ }
443
+ return h;
444
+ }, {});
445
+ options.commentsMap = (model.comments || []).reduce((h, comment) => {
446
+ if (comment.ref) {
447
+ h[comment.ref] = comment;
448
+ }
449
+ return h;
450
+ }, {});
451
+ options.hyperlinkMap = (model.hyperlinks || []).reduce((h, hyperlink) => {
452
+ if (hyperlink.rId) {
453
+ h[hyperlink.address] = rels[hyperlink.rId].Target;
454
+ }
455
+ return h;
456
+ }, {});
457
+ options.formulae = {};
458
+
459
+ // compact the rows and cells
460
+ model.rows = model.rows && model.rows.filter(Boolean) || [];
461
+ model.rows.forEach(row => {
462
+ row.cells = row.cells && row.cells.filter(Boolean) || [];
463
+ });
464
+ this.map.cols.reconcile(model.cols, options);
465
+ this.map.sheetData.reconcile(model.rows, options);
466
+ this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options);
467
+ model.media = [];
468
+ if (model.drawing) {
469
+ const drawingRel = rels[model.drawing.rId];
470
+ const match = drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);
471
+ if (match) {
472
+ const drawingName = match[1];
473
+ const drawing = options.drawings[drawingName];
474
+ drawing.anchors.forEach(anchor => {
475
+ if (anchor.medium) {
476
+ const image = {
477
+ type: 'image',
478
+ imageId: anchor.medium.index,
479
+ range: anchor.range,
480
+ hyperlinks: anchor.picture.hyperlinks
481
+ };
482
+ model.media.push(image);
483
+ }
484
+ });
485
+ }
486
+ }
487
+ const backgroundRel = model.background && rels[model.background.rId];
488
+ if (backgroundRel) {
489
+ const target = backgroundRel.Target.split('/media/')[1];
490
+ const imageId = options.mediaIndex && options.mediaIndex[target];
491
+ if (imageId !== undefined) {
492
+ model.media.push({
493
+ type: 'background',
494
+ imageId
495
+ });
496
+ }
497
+ }
498
+ model.tables = (model.tables || []).map(tablePart => {
499
+ const rel = rels[tablePart.rId];
500
+ return options.tables[rel.Target];
501
+ });
502
+ delete model.relationships;
503
+ delete model.hyperlinks;
504
+ delete model.comments;
505
+ }
506
+ }
507
+ WorkSheetXform.WORKSHEET_ATTRIBUTES = {
508
+ xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
509
+ 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
510
+ 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',
511
+ 'mc:Ignorable': 'x14ac',
512
+ 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'
513
+ };
514
+ module.exports = WorkSheetXform;
515
+ //# sourceMappingURL=worksheet-xform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worksheet-xform.js","names":["_","require","colCache","XmlStream","RelType","Merges","BaseXform","ListXform","RowXform","ColXform","DimensionXform","HyperlinkXform","MergeCellXform","DataValidationsXform","SheetPropertiesXform","SheetFormatPropertiesXform","SheetViewXform","SheetProtectionXform","PageMarginsXform","PageSetupXform","PrintOptionsXform","AutoFilterXform","PictureXform","DrawingXform","TablePartXform","RowBreaksXform","HeaderFooterXform","ConditionalFormattingsXform","ExtListXform","mergeRule","rule","extRule","Object","keys","forEach","key","value","extValue","undefined","mergeConditionalFormattings","model","extModel","length","cfMap","ruleMap","cf","ref","rules","x14Id","extCf","push","WorkSheetXform","constructor","options","_ref","maxRows","maxCols","ignoreNodes","map","sheetPr","dimension","sheetViews","tag","count","childXform","sheetFormatPr","cols","sheetData","empty","maxItems","autoFilter","mergeCells","rowBreaks","hyperlinks","pageMargins","dataValidations","pageSetup","headerFooter","printOptions","picture","drawing","sheetProtection","tableParts","conditionalFormatting","extLst","prepare","merges","comments","formulae","siFormulae","rows","conditionalFormattings","rels","nextRid","r","concat","hyperlink","rId","Id","Type","Hyperlink","Target","target","TargetMode","comment","Comments","id","vmlDrawing","VmlDrawing","item","refAddress","decodeAddress","commentRefs","commentName","drawingRelsHash","bookImage","media","medium","type","imageId","Image","name","extension","background","image","drawingsCount","anchors","drawings","rIdImage","preImageId","anchor","range","rIdHyperLink","tooltip","tables","table","Table","columns","column","style","dxfId","styles","addDxfStyle","pivotTables","PivotTable","render","xmlStream","openXml","StdDocAttributes","openNode","WORKSHEET_ATTRIBUTES","sheetFormatPropertiesModel","properties","defaultRowHeight","dyDescent","outlineLevelCol","outlineLevelRow","defaultColWidth","sheetPropertiesModel","outlineProperties","tabColor","fitToPage","pageMarginsModel","margins","printOptionsModel","showRowColHeaders","showGridLines","horizontalCentered","verticalCentered","sheetProtectionModel","dimensions","views","rel","leafNode","closeNode","parseOpen","node","parser","each","xform","reset","includes","parseText","text","parseClose","sheetProperties","assign","reconcile","relationships","reduce","h","vmlComment","vmlDrawings","index","note","commentsMap","hyperlinkMap","address","filter","Boolean","row","cells","drawingRel","match","drawingName","backgroundRel","split","mediaIndex","tablePart","xmlns","module","exports"],"sources":["../../../../../lib/xlsx/xform/sheet/worksheet-xform.js"],"sourcesContent":["const _ = require('../../../utils/under-dash');\n\nconst colCache = require('../../../utils/col-cache');\nconst XmlStream = require('../../../utils/xml-stream');\n\nconst RelType = require('../../rel-type');\n\nconst Merges = require('./merges');\n\nconst BaseXform = require('../base-xform');\nconst ListXform = require('../list-xform');\nconst RowXform = require('./row-xform');\nconst ColXform = require('./col-xform');\nconst DimensionXform = require('./dimension-xform');\nconst HyperlinkXform = require('./hyperlink-xform');\nconst MergeCellXform = require('./merge-cell-xform');\nconst DataValidationsXform = require('./data-validations-xform');\nconst SheetPropertiesXform = require('./sheet-properties-xform');\nconst SheetFormatPropertiesXform = require('./sheet-format-properties-xform');\nconst SheetViewXform = require('./sheet-view-xform');\nconst SheetProtectionXform = require('./sheet-protection-xform');\nconst PageMarginsXform = require('./page-margins-xform');\nconst PageSetupXform = require('./page-setup-xform');\nconst PrintOptionsXform = require('./print-options-xform');\nconst AutoFilterXform = require('./auto-filter-xform');\nconst PictureXform = require('./picture-xform');\nconst DrawingXform = require('./drawing-xform');\nconst TablePartXform = require('./table-part-xform');\nconst RowBreaksXform = require('./row-breaks-xform');\nconst HeaderFooterXform = require('./header-footer-xform');\nconst ConditionalFormattingsXform = require('./cf/conditional-formattings-xform');\nconst ExtListXform = require('./ext-lst-xform');\n\nconst mergeRule = (rule, extRule) => {\n Object.keys(extRule).forEach(key => {\n const value = rule[key];\n const extValue = extRule[key];\n if (value === undefined && extValue !== undefined) {\n rule[key] = extValue;\n }\n });\n};\n\nconst mergeConditionalFormattings = (model, extModel) => {\n // conditional formattings are rendered in worksheet.conditionalFormatting and also in\n // worksheet.extLst.ext.x14:conditionalFormattings\n // some (e.g. dataBar) are even spread across both!\n if (!extModel || !extModel.length) {\n return model;\n }\n if (!model || !model.length) {\n return extModel;\n }\n\n // index model rules by x14Id\n const cfMap = {};\n const ruleMap = {};\n model.forEach(cf => {\n cfMap[cf.ref] = cf;\n cf.rules.forEach(rule => {\n const {x14Id} = rule;\n if (x14Id) {\n ruleMap[x14Id] = rule;\n }\n });\n });\n\n extModel.forEach(extCf => {\n extCf.rules.forEach(extRule => {\n const rule = ruleMap[extRule.x14Id];\n if (rule) {\n // merge with matching rule\n mergeRule(rule, extRule);\n } else if (cfMap[extCf.ref]) {\n // reuse existing cf ref\n cfMap[extCf.ref].rules.push(extRule);\n } else {\n // create new cf\n model.push({\n ref: extCf.ref,\n rules: [extRule],\n });\n }\n });\n });\n\n // need to cope with rules in extModel that don't exist in model\n return model;\n};\n\nclass WorkSheetXform extends BaseXform {\n constructor(options) {\n super();\n\n const {maxRows, maxCols, ignoreNodes} = options || {};\n\n this.ignoreNodes = ignoreNodes || [];\n\n this.map = {\n sheetPr: new SheetPropertiesXform(),\n dimension: new DimensionXform(),\n sheetViews: new ListXform({\n tag: 'sheetViews',\n count: false,\n childXform: new SheetViewXform(),\n }),\n sheetFormatPr: new SheetFormatPropertiesXform(),\n cols: new ListXform({tag: 'cols', count: false, childXform: new ColXform()}),\n sheetData: new ListXform({\n tag: 'sheetData',\n count: false,\n empty: true,\n childXform: new RowXform({maxItems: maxCols}),\n maxItems: maxRows,\n }),\n autoFilter: new AutoFilterXform(),\n mergeCells: new ListXform({tag: 'mergeCells', count: true, childXform: new MergeCellXform()}),\n rowBreaks: new RowBreaksXform(),\n hyperlinks: new ListXform({\n tag: 'hyperlinks',\n count: false,\n childXform: new HyperlinkXform(),\n }),\n pageMargins: new PageMarginsXform(),\n dataValidations: new DataValidationsXform(),\n pageSetup: new PageSetupXform(),\n headerFooter: new HeaderFooterXform(),\n printOptions: new PrintOptionsXform(),\n picture: new PictureXform(),\n drawing: new DrawingXform(),\n sheetProtection: new SheetProtectionXform(),\n tableParts: new ListXform({tag: 'tableParts', count: true, childXform: new TablePartXform()}),\n conditionalFormatting: new ConditionalFormattingsXform(),\n extLst: new ExtListXform(),\n };\n }\n\n prepare(model, options) {\n options.merges = new Merges();\n model.hyperlinks = options.hyperlinks = [];\n model.comments = options.comments = [];\n\n options.formulae = {};\n options.siFormulae = 0;\n this.map.cols.prepare(model.cols, options);\n this.map.sheetData.prepare(model.rows, options);\n this.map.conditionalFormatting.prepare(model.conditionalFormattings, options);\n\n model.mergeCells = options.merges.mergeCells;\n\n // prepare relationships\n const rels = (model.rels = []);\n\n function nextRid(r) {\n return `rId${r.length + 1}`;\n }\n\n model.hyperlinks.forEach(hyperlink => {\n const rId = nextRid(rels);\n hyperlink.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Hyperlink,\n Target: hyperlink.target,\n TargetMode: 'External',\n });\n });\n\n // prepare comment relationships\n if (model.comments.length > 0) {\n const comment = {\n Id: nextRid(rels),\n Type: RelType.Comments,\n Target: `../comments${model.id}.xml`,\n };\n rels.push(comment);\n const vmlDrawing = {\n Id: nextRid(rels),\n Type: RelType.VmlDrawing,\n Target: `../drawings/vmlDrawing${model.id}.vml`,\n };\n rels.push(vmlDrawing);\n\n model.comments.forEach(item => {\n item.refAddress = colCache.decodeAddress(item.ref);\n });\n\n options.commentRefs.push({\n commentName: `comments${model.id}`,\n vmlDrawing: `vmlDrawing${model.id}`,\n });\n }\n\n const drawingRelsHash = [];\n let bookImage;\n model.media.forEach(medium => {\n if (medium.type === 'background') {\n const rId = nextRid(rels);\n bookImage = options.media[medium.imageId];\n rels.push({\n Id: rId,\n Type: RelType.Image,\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n model.background = {\n rId,\n };\n model.image = options.media[medium.imageId];\n } else if (medium.type === 'image') {\n let {drawing} = model;\n bookImage = options.media[medium.imageId];\n if (!drawing) {\n drawing = model.drawing = {\n rId: nextRid(rels),\n name: `drawing${++options.drawingsCount}`,\n anchors: [],\n rels: [],\n };\n options.drawings.push(drawing);\n rels.push({\n Id: drawing.rId,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: `../drawings/${drawing.name}.xml`,\n });\n }\n let rIdImage =\n this.preImageId === medium.imageId ? drawingRelsHash[medium.imageId] : drawingRelsHash[drawing.rels.length];\n if (!rIdImage) {\n rIdImage = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdImage;\n drawing.rels.push({\n Id: rIdImage,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\n });\n }\n\n const anchor = {\n picture: {\n rId: rIdImage,\n },\n range: medium.range,\n };\n if (medium.hyperlinks && medium.hyperlinks.hyperlink) {\n const rIdHyperLink = nextRid(drawing.rels);\n drawingRelsHash[drawing.rels.length] = rIdHyperLink;\n anchor.picture.hyperlinks = {\n tooltip: medium.hyperlinks.tooltip,\n rId: rIdHyperLink,\n };\n drawing.rels.push({\n Id: rIdHyperLink,\n Type: RelType.Hyperlink,\n Target: medium.hyperlinks.hyperlink,\n TargetMode: 'External',\n });\n }\n this.preImageId = medium.imageId;\n drawing.anchors.push(anchor);\n }\n });\n\n // prepare tables\n model.tables.forEach(table => {\n // relationships\n const rId = nextRid(rels);\n table.rId = rId;\n rels.push({\n Id: rId,\n Type: RelType.Table,\n Target: `../tables/${table.target}`,\n });\n\n // dynamic styles\n table.columns.forEach(column => {\n const {style} = column;\n if (style) {\n column.dxfId = options.styles.addDxfStyle(style);\n }\n });\n });\n\n // prepare pivot tables\n if ((model.pivotTables || []).length) {\n rels.push({\n Id: nextRid(rels),\n Type: RelType.PivotTable,\n Target: '../pivotTables/pivotTable1.xml',\n });\n }\n\n // prepare ext items\n this.map.extLst.prepare(model, options);\n }\n\n render(xmlStream, model) {\n xmlStream.openXml(XmlStream.StdDocAttributes);\n xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES);\n\n const sheetFormatPropertiesModel = model.properties\n ? {\n defaultRowHeight: model.properties.defaultRowHeight,\n dyDescent: model.properties.dyDescent,\n outlineLevelCol: model.properties.outlineLevelCol,\n outlineLevelRow: model.properties.outlineLevelRow,\n }\n : undefined;\n if (model.properties && model.properties.defaultColWidth) {\n sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth;\n }\n const sheetPropertiesModel = {\n outlineProperties: model.properties && model.properties.outlineProperties,\n tabColor: model.properties && model.properties.tabColor,\n pageSetup:\n model.pageSetup && model.pageSetup.fitToPage\n ? {\n fitToPage: model.pageSetup.fitToPage,\n }\n : undefined,\n };\n const pageMarginsModel = model.pageSetup && model.pageSetup.margins;\n const printOptionsModel = {\n showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders,\n showGridLines: model.pageSetup && model.pageSetup.showGridLines,\n horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered,\n verticalCentered: model.pageSetup && model.pageSetup.verticalCentered,\n };\n const sheetProtectionModel = model.sheetProtection;\n\n this.map.sheetPr.render(xmlStream, sheetPropertiesModel);\n this.map.dimension.render(xmlStream, model.dimensions);\n this.map.sheetViews.render(xmlStream, model.views);\n this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel);\n this.map.cols.render(xmlStream, model.cols);\n this.map.sheetData.render(xmlStream, model.rows);\n this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter\n this.map.autoFilter.render(xmlStream, model.autoFilter);\n this.map.mergeCells.render(xmlStream, model.mergeCells);\n this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations\n this.map.dataValidations.render(xmlStream, model.dataValidations);\n\n // For some reason hyperlinks have to be after the data validations\n this.map.hyperlinks.render(xmlStream, model.hyperlinks);\n\n this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins\n this.map.pageMargins.render(xmlStream, pageMarginsModel);\n this.map.pageSetup.render(xmlStream, model.pageSetup);\n this.map.headerFooter.render(xmlStream, model.headerFooter);\n this.map.rowBreaks.render(xmlStream, model.rowBreaks);\n this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks\n this.map.picture.render(xmlStream, model.background); // Note: must be after drawing\n this.map.tableParts.render(xmlStream, model.tables);\n\n this.map.extLst.render(xmlStream, model);\n\n if (model.rels) {\n // add a <legacyDrawing /> node for each comment\n model.rels.forEach(rel => {\n if (rel.Type === RelType.VmlDrawing) {\n xmlStream.leafNode('legacyDrawing', {'r:id': rel.Id});\n }\n });\n }\n\n xmlStream.closeNode();\n }\n\n parseOpen(node) {\n if (this.parser) {\n this.parser.parseOpen(node);\n return true;\n }\n\n if (node.name === 'worksheet') {\n _.each(this.map, xform => {\n xform.reset();\n });\n return true;\n }\n\n if (this.map[node.name] && !this.ignoreNodes.includes(node.name)) {\n this.parser = this.map[node.name];\n this.parser.parseOpen(node);\n }\n return true;\n }\n\n parseText(text) {\n if (this.parser) {\n this.parser.parseText(text);\n }\n }\n\n parseClose(name) {\n if (this.parser) {\n if (!this.parser.parseClose(name)) {\n this.parser = undefined;\n }\n return true;\n }\n switch (name) {\n case 'worksheet': {\n const properties = this.map.sheetFormatPr.model || {};\n if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) {\n properties.tabColor = this.map.sheetPr.model.tabColor;\n }\n if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) {\n properties.outlineProperties = this.map.sheetPr.model.outlineProperties;\n }\n const sheetProperties = {\n fitToPage:\n (this.map.sheetPr.model &&\n this.map.sheetPr.model.pageSetup &&\n this.map.sheetPr.model.pageSetup.fitToPage) ||\n false,\n margins: this.map.pageMargins.model,\n };\n const pageSetup = Object.assign(sheetProperties, this.map.pageSetup.model, this.map.printOptions.model);\n const conditionalFormattings = mergeConditionalFormattings(\n this.map.conditionalFormatting.model,\n this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']\n );\n this.model = {\n dimensions: this.map.dimension.model,\n cols: this.map.cols.model,\n rows: this.map.sheetData.model,\n mergeCells: this.map.mergeCells.model,\n hyperlinks: this.map.hyperlinks.model,\n dataValidations: this.map.dataValidations.model,\n properties,\n views: this.map.sheetViews.model,\n pageSetup,\n headerFooter: this.map.headerFooter.model,\n background: this.map.picture.model,\n drawing: this.map.drawing.model,\n tables: this.map.tableParts.model,\n conditionalFormattings,\n };\n\n if (this.map.autoFilter.model) {\n this.model.autoFilter = this.map.autoFilter.model;\n }\n if (this.map.sheetProtection.model) {\n this.model.sheetProtection = this.map.sheetProtection.model;\n }\n\n return false;\n }\n\n default:\n // not quite sure how we get here!\n return true;\n }\n }\n\n reconcile(model, options) {\n // options.merges = new Merges();\n // options.merges.reconcile(model.mergeCells, model.rows);\n const rels = (model.relationships || []).reduce((h, rel) => {\n h[rel.Id] = rel;\n if (rel.Type === RelType.Comments) {\n model.comments = options.comments[rel.Target].comments;\n }\n if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) {\n const vmlComment = options.vmlDrawings[rel.Target].comments;\n model.comments.forEach((comment, index) => {\n comment.note = Object.assign({}, comment.note, vmlComment[index]);\n });\n }\n return h;\n }, {});\n options.commentsMap = (model.comments || []).reduce((h, comment) => {\n if (comment.ref) {\n h[comment.ref] = comment;\n }\n return h;\n }, {});\n options.hyperlinkMap = (model.hyperlinks || []).reduce((h, hyperlink) => {\n if (hyperlink.rId) {\n h[hyperlink.address] = rels[hyperlink.rId].Target;\n }\n return h;\n }, {});\n options.formulae = {};\n\n // compact the rows and cells\n model.rows = (model.rows && model.rows.filter(Boolean)) || [];\n model.rows.forEach(row => {\n row.cells = (row.cells && row.cells.filter(Boolean)) || [];\n });\n\n this.map.cols.reconcile(model.cols, options);\n this.map.sheetData.reconcile(model.rows, options);\n this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options);\n\n model.media = [];\n if (model.drawing) {\n const drawingRel = rels[model.drawing.rId];\n const match = drawingRel.Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);\n if (match) {\n const drawingName = match[1];\n const drawing = options.drawings[drawingName];\n drawing.anchors.forEach(anchor => {\n if (anchor.medium) {\n const image = {\n type: 'image',\n imageId: anchor.medium.index,\n range: anchor.range,\n hyperlinks: anchor.picture.hyperlinks,\n };\n model.media.push(image);\n }\n });\n }\n }\n\n const backgroundRel = model.background && rels[model.background.rId];\n if (backgroundRel) {\n const target = backgroundRel.Target.split('/media/')[1];\n const imageId = options.mediaIndex && options.mediaIndex[target];\n if (imageId !== undefined) {\n model.media.push({\n type: 'background',\n imageId,\n });\n }\n }\n\n model.tables = (model.tables || []).map(tablePart => {\n const rel = rels[tablePart.rId];\n return options.tables[rel.Target];\n });\n\n delete model.relationships;\n delete model.hyperlinks;\n delete model.comments;\n }\n}\n\nWorkSheetXform.WORKSHEET_ATTRIBUTES = {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'mc:Ignorable': 'x14ac',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n};\n\nmodule.exports = WorkSheetXform;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ const BaseXform = require('../base-xform');
4
+ class BooleanXform extends BaseXform {
5
+ constructor(options) {
6
+ super();
7
+ this.tag = options.tag;
8
+ this.attr = options.attr;
9
+ }
10
+ render(xmlStream, model) {
11
+ if (model) {
12
+ xmlStream.openNode(this.tag);
13
+ xmlStream.closeNode();
14
+ }
15
+ }
16
+ parseOpen(node) {
17
+ if (node.name === this.tag) {
18
+ this.model = true;
19
+ }
20
+ }
21
+ parseText() {}
22
+ parseClose() {
23
+ return false;
24
+ }
25
+ }
26
+ module.exports = BooleanXform;
27
+ //# sourceMappingURL=boolean-xform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean-xform.js","names":["BaseXform","require","BooleanXform","constructor","options","tag","attr","render","xmlStream","model","openNode","closeNode","parseOpen","node","name","parseText","parseClose","module","exports"],"sources":["../../../../../lib/xlsx/xform/simple/boolean-xform.js"],"sourcesContent":["const BaseXform = require('../base-xform');\n\nclass BooleanXform extends BaseXform {\n constructor(options) {\n super();\n\n this.tag = options.tag;\n this.attr = options.attr;\n }\n\n render(xmlStream, model) {\n if (model) {\n xmlStream.openNode(this.tag);\n xmlStream.closeNode();\n }\n }\n\n parseOpen(node) {\n if (node.name === this.tag) {\n this.model = true;\n }\n }\n\n parseText() {}\n\n parseClose() {\n return false;\n }\n}\n\nmodule.exports = BooleanXform;\n"],"mappings":";;AAAA,MAAMA,SAAS,GAAGC,OAAO,CAAC,eAAe,CAAC;AAE1C,MAAMC,YAAY,SAASF,SAAS,CAAC;EACnCG,WAAWA,CAACC,OAAO,EAAE;IACnB,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,GAAG,GAAGD,OAAO,CAACC,GAAG;IACtB,IAAI,CAACC,IAAI,GAAGF,OAAO,CAACE,IAAI;EAC1B;EAEAC,MAAMA,CAACC,SAAS,EAAEC,KAAK,EAAE;IACvB,IAAIA,KAAK,EAAE;MACTD,SAAS,CAACE,QAAQ,CAAC,IAAI,CAACL,GAAG,CAAC;MAC5BG,SAAS,CAACG,SAAS,CAAC,CAAC;IACvB;EACF;EAEAC,SAASA,CAACC,IAAI,EAAE;IACd,IAAIA,IAAI,CAACC,IAAI,KAAK,IAAI,CAACT,GAAG,EAAE;MAC1B,IAAI,CAACI,KAAK,GAAG,IAAI;IACnB;EACF;EAEAM,SAASA,CAAA,EAAG,CAAC;EAEbC,UAAUA,CAAA,EAAG;IACX,OAAO,KAAK;EACd;AACF;AAEAC,MAAM,CAACC,OAAO,GAAGhB,YAAY","ignoreList":[]}