exceljs-lts 4.5.3 → 4.5.5

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 (45) hide show
  1. package/README.md +43 -11
  2. package/README_zh.md +29 -10
  3. package/dist/es5/doc/cell.js +37 -12
  4. package/dist/es5/doc/cell.js.map +1 -1
  5. package/dist/es5/doc/data-validations.js +94 -1
  6. package/dist/es5/doc/data-validations.js.map +1 -1
  7. package/dist/es5/doc/image.js +28 -0
  8. package/dist/es5/doc/image.js.map +1 -1
  9. package/dist/es5/doc/worksheet.js +8 -0
  10. package/dist/es5/doc/worksheet.js.map +1 -1
  11. package/dist/es5/stream/xlsx/workbook-reader.js +2 -1
  12. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -1
  13. package/dist/es5/stream/xlsx/workbook-writer.js +21 -1
  14. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -1
  15. package/dist/es5/stream/xlsx/worksheet-reader.js +1 -1
  16. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -1
  17. package/dist/es5/stream/xlsx/worksheet-writer.js +89 -0
  18. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -1
  19. package/dist/es5/xlsx/rel-type.js +1 -0
  20. package/dist/es5/xlsx/rel-type.js.map +1 -1
  21. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +53 -5
  22. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -1
  23. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +14 -3
  24. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -1
  25. package/dist/exceljs.bare.js +237 -23
  26. package/dist/exceljs.bare.js.map +8 -8
  27. package/dist/exceljs.bare.min.js +6 -6
  28. package/dist/exceljs.bare.min.js.map +1 -1
  29. package/dist/exceljs.js +237 -23
  30. package/dist/exceljs.js.map +8 -8
  31. package/dist/exceljs.min.js +5 -5
  32. package/dist/exceljs.min.js.map +1 -1
  33. package/index.d.ts +40 -3
  34. package/lib/doc/cell.js +37 -12
  35. package/lib/doc/data-validations.js +83 -1
  36. package/lib/doc/image.js +32 -0
  37. package/lib/doc/worksheet.js +9 -0
  38. package/lib/stream/xlsx/workbook-reader.js +6 -1
  39. package/lib/stream/xlsx/workbook-writer.js +19 -0
  40. package/lib/stream/xlsx/worksheet-reader.js +1 -1
  41. package/lib/stream/xlsx/worksheet-writer.js +73 -0
  42. package/lib/xlsx/rel-type.js +1 -0
  43. package/lib/xlsx/xform/sheet/auto-filter-xform.js +42 -3
  44. package/lib/xlsx/xform/sheet/data-validations-xform.js +14 -3
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -326,7 +326,7 @@ const sheet = workbook.addWorksheet('My Sheet', {views:[{state: 'frozen', xSplit
326
326
 
327
327
  // Create worksheets with headers and footers
328
328
  const sheet = workbook.addWorksheet('My Sheet', {
329
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
329
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
330
330
  });
331
331
 
332
332
  // create new sheet with pageSetup settings for A4 - landscape
@@ -518,11 +518,11 @@ Note: Images are not currently supported.
518
518
 
519
519
  // Create worksheets with headers and footers
520
520
  var sheet = workbook.addWorksheet('sheet', {
521
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
521
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
522
522
  });
523
523
  // Create worksheets with headers and footers
524
524
  var worksheetWriter = workbookWriter.addWorksheet('sheet', {
525
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
525
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
526
526
  });
527
527
  // Set footer (default centered), result: "Page 2 of 16"
528
528
  worksheet.headerFooter.oddFooter = "Page &P of &N";
@@ -543,8 +543,17 @@ worksheet.headerFooter.oddFooter = "&Lexceljs&C&F&RPage &P";
543
543
  worksheet.headerFooter.differentFirst = true;
544
544
  worksheet.headerFooter.firstHeader = "Hello Exceljs";
545
545
  worksheet.headerFooter.firstFooter = "Hello World"
546
+
547
+ // Add different header & footer for even pages (odd pages use oddHeader/oddFooter)
548
+ worksheet.headerFooter.differentOddEven = true;
549
+ worksheet.headerFooter.evenHeader = "Even page header";
550
+ worksheet.headerFooter.evenFooter = "Page &P (even)";
546
551
  ```
547
552
 
553
+ Note: `firstHeader`/`firstFooter` only take effect when `differentFirst` is `true`, and
554
+ `evenHeader`/`evenFooter` only take effect when `differentOddEven` is `true`. Without these flags
555
+ Excel ignores them and uses `oddHeader`/`oddFooter` on every page.
556
+
548
557
  **Supported headerFooter settings**
549
558
 
550
559
  | Name | Default | Description |
@@ -553,10 +562,10 @@ worksheet.headerFooter.firstFooter = "Hello World"
553
562
  | differentOddEven | false | Set the value of differentOddEven as true, which indicates that headers/footers for odd and even pages are different |
554
563
  | oddHeader | null | Set header string for odd(default) pages, could format the string |
555
564
  | oddFooter | null | Set footer string for odd(default) pages, could format the string |
556
- | evenHeader | null | Set header string for even pages, could format the string |
557
- | evenFooter | null | Set footer string for even pages, could format the string |
558
- | firstHeader | null | Set header string for the first page, could format the string |
559
- | firstFooter | null | Set footer string for the first page, could format the string |
565
+ | evenHeader | null | Set header string for even pages, could format the string. Requires `differentOddEven: true` |
566
+ | evenFooter | null | Set footer string for even pages, could format the string. Requires `differentOddEven: true` |
567
+ | firstHeader | null | Set header string for the first page, could format the string. Requires `differentFirst: true` |
568
+ | firstFooter | null | Set footer string for the first page, could format the string. Requires `differentFirst: true` |
560
569
 
561
570
  **Script Commands**
562
571
 
@@ -675,6 +684,19 @@ worksheet.autoFilter = {
675
684
  }
676
685
  ```
677
686
 
687
+ Specific columns can be excluded from showing a filter button with `exclude`. It takes an array of
688
+ column offsets within the range (0 is the leftmost column of the range) and hides the filter button
689
+ on those columns, e.g. under merged header cells.
690
+
691
+ ```javascript
692
+ // Set an auto filter from A1 to E1, hiding the filter buttons on columns A and C
693
+ worksheet.autoFilter = {
694
+ from: 'A1',
695
+ to: 'E1',
696
+ exclude: [0, 2],
697
+ }
698
+ ```
699
+
678
700
  ## Columns[⬆](#contents)<!-- Link generated with jump2header -->
679
701
 
680
702
  ```javascript
@@ -1052,6 +1074,12 @@ expect(worksheet.getCell('A1').names).to.have.members(['thing2']);
1052
1074
 
1053
1075
  Cells can define what values are valid or not and provide prompting to the user to help guide them.
1054
1076
 
1077
+ When a file is loaded, a validation that applies to a large range (more than 1000 cells, for example
1078
+ a whole column such as `A2:A1048576`) is kept as one range-keyed entry in
1079
+ `worksheet.dataValidations.model` instead of one entry per cell. `cell.dataValidation` still returns it
1080
+ for every cell in the range, and setting `cell.dataValidation` on one of those cells overrides just
1081
+ that cell.
1082
+
1055
1083
  Validation types can be one of the following:
1056
1084
 
1057
1085
  | Type | Description |
@@ -2023,7 +2051,8 @@ Adding images to a worksheet is a two-step process.
2023
2051
  First, the image is added to the workbook via the addImage() function which will also return an imageId value.
2024
2052
  Then, using the imageId, the image can be added to the worksheet either as a tiled background or covering a cell range.
2025
2053
 
2026
- Note: As of this version, adjusting or transforming the image is not supported and images are not supported in streaming mode.
2054
+ Note: As of this version, adjusting or transforming the image is not supported.
2055
+ The streaming WorkbookWriter supports `addImage()` and `addBackgroundImage()` too; add images to a streamed worksheet before you commit it.
2027
2056
 
2028
2057
  ### Add Image to Workbook[⬆](#contents)<!-- Link generated with jump2header -->
2029
2058
 
@@ -2072,6 +2101,8 @@ worksheet.addImage(imageId2, 'B2:D6');
2072
2101
  ```
2073
2102
 
2074
2103
  Using a structure instead of a range string, it is possible to partially cover cells.
2104
+ The structure needs a `br` or an `ext`. `addImage` and `addBackgroundImage` throw an Error right away if the
2105
+ image id was not returned by `workbook.addImage` or if the range is malformed.
2075
2106
 
2076
2107
  Note that the coordinate system used for this is zero based, so the top-left of A1 will be { col: 0, row: 0 }.
2077
2108
  Fractions of cells can be specified by using floating point numbers, e.g. the midpoint of A1 is { col: 0.5, row: 0.5 }.
@@ -2394,6 +2425,7 @@ The interface to the streaming workbook and worksheet is almost the same as the
2394
2425
  * Once a worksheet is added to a workbook, it cannot be removed.
2395
2426
  * Once a row is committed, it is no longer accessible since it will have been dropped from the worksheet.
2396
2427
  * unMergeCells() is not supported.
2428
+ * Images (`worksheet.addImage()`, `worksheet.addBackgroundImage()`) must be added before the worksheet is committed.
2397
2429
 
2398
2430
  Note that it is possible to build the entire workbook without committing any rows.
2399
2431
  When the workbook is committed, all added worksheets (including all uncommitted rows) will be automatically committed.
@@ -2488,10 +2520,10 @@ The constructor takes a required input argument and an optional options argument
2488
2520
  | --------------------- | ----------- |
2489
2521
  | input (required) | Specifies the name of the file or the readable stream from which to read the XLSX workbook. |
2490
2522
  | options (optional) | Specifies how to handle the event types occuring during the read parsing. |
2491
- | options.entries | Specifies whether to emit entries (`'emit'`) or not (`'ignore'`). Default is `'emit'`. |
2523
+ | options.entries | Specifies whether to emit entries (`'emit'`) or not (`'ignore'`). Default is `'ignore'`. |
2492
2524
  | options.sharedStrings | Specifies whether to cache shared strings (`'cache'`), which inserts them into the respective cell values, or whether to emit them (`'emit'`) or ignore them (`'ignore'`), in both of which case the cell value will be a reference to the shared string's index. Default is `'cache'`. |
2493
- | options.hyperlinks | Specifies whether to cache hyperlinks (`'cache'`), which inserts them into their respective cells, whether to emit them (`'emit'`) or whether to ignore them (`'ignore'`). Default is `'cache'`. |
2494
- | options.styles | Specifies whether to cache styles (`'cache'`), which inserts them into their respective rows and cells, or whether to ignore them (`'ignore'`). Default is `'cache'`. |
2525
+ | options.hyperlinks | Specifies whether to cache hyperlinks (`'cache'`), which inserts them into their respective cells, whether to emit them (`'emit'`) or whether to ignore them (`'ignore'`). Default is `'ignore'`. |
2526
+ | options.styles | Specifies whether to cache styles (`'cache'`), which inserts them into their respective rows and cells, or whether to ignore them (`'ignore'`). Default is `'ignore'`. Use `'cache'` to get number formats and `Date` cell values; with `'ignore'`, dates are read as plain numbers. |
2495
2527
  | options.worksheets | Specifies whether to emit worksheets (`'emit'`) or not (`'ignore'`). Default is `'emit'`. |
2496
2528
 
2497
2529
  ```js
package/README_zh.md CHANGED
@@ -307,7 +307,7 @@ const worksheet = workbook.addWorksheet('My Sheet', {
307
307
 
308
308
  // 创建一个具有页眉页脚的工作表
309
309
  const sheet = workbook.addWorksheet('My Sheet', {
310
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
310
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
311
311
  });
312
312
 
313
313
  // 创建一个冻结了第一行和第一列的工作表
@@ -485,12 +485,12 @@ worksheet.pageSetup.printTitlesColumn = 'A:C';
485
485
  ```javascript
486
486
  // 创建一个带有页眉和页脚的工作表
487
487
  var sheet = workbook.addWorksheet('My Sheet', {
488
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
488
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
489
489
  });
490
490
 
491
491
  // 创建一个带有页眉和页脚可写的工作表
492
492
  var worksheetWriter = workbookWriter.addWorksheet('sheet', {
493
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
493
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
494
494
  });
495
495
  // 代码中出现的&开头字符对应变量,相关信息可查阅下文的变量表
496
496
  // 设置页脚(默认居中),结果:“第 2 页,共 16 页”
@@ -512,8 +512,15 @@ worksheet.headerFooter.oddFooter = "&Lexceljs&C&F&RPage &P";
512
512
  worksheet.headerFooter.differentFirst = true;
513
513
  worksheet.headerFooter.firstHeader = "Hello Exceljs";
514
514
  worksheet.headerFooter.firstFooter = "Hello World"
515
+
516
+ // 为偶数页添加不同的页眉和页脚(奇数页使用 oddHeader/oddFooter)
517
+ worksheet.headerFooter.differentOddEven = true;
518
+ worksheet.headerFooter.evenHeader = "Even page header";
519
+ worksheet.headerFooter.evenFooter = "Page &P (even)";
515
520
  ```
516
521
 
522
+ 注意:只有当 `differentFirst` 为 `true` 时,`firstHeader`/`firstFooter` 才会生效;只有当 `differentOddEven` 为 `true` 时,`evenHeader`/`evenFooter` 才会生效。否则 Excel 会忽略它们,并在所有页面上使用 `oddHeader`/`oddFooter`。
523
+
517
524
  **支持的 headerFooter 设置**
518
525
 
519
526
  | 属性名 | 默认值 | 描述 |
@@ -522,10 +529,10 @@ worksheet.headerFooter.firstFooter = "Hello World"
522
529
  | differentOddEven | `false` | 将 `differentOddEven` 的值设置为 `true`,表示奇数页和偶数页的页眉/页脚不同 |
523
530
  | oddHeader | `null` | 设置奇数(默认)页面的标题字符串,可以设置格式化字符串 |
524
531
  | oddFooter | `null` | 设置奇数(默认)页面的页脚字符串,可以设置格式化字符串 |
525
- | evenHeader | `null` | 设置偶数页的标题字符串,可以设置格式化字符串 |
526
- | evenFooter | `null` | 为偶数页设置页脚字符串,可以设置格式化字符串 |
527
- | firstHeader | `null` | 设置首页的标题字符串,可以设置格式化字符串 |
528
- | firstFooter | `null` | 设置首页的页脚字符串,可以设置格式化字符串 |
532
+ | evenHeader | `null` | 设置偶数页的标题字符串,可以设置格式化字符串。需要 `differentOddEven: true` |
533
+ | evenFooter | `null` | 为偶数页设置页脚字符串,可以设置格式化字符串。需要 `differentOddEven: true` |
534
+ | firstHeader | `null` | 设置首页的标题字符串,可以设置格式化字符串。需要 `differentFirst: true` |
535
+ | firstFooter | `null` | 设置首页的页脚字符串,可以设置格式化字符串。需要 `differentFirst: true` |
529
536
 
530
537
  **脚本命令**
531
538
 
@@ -641,6 +648,17 @@ worksheet.autoFilter = {
641
648
  }
642
649
  ```
643
650
 
651
+ 可以使用 `exclude` 隐藏指定列的筛选按钮。它接受一个列偏移数组(0 表示范围最左侧的列),例如用于合并的标题单元格。
652
+
653
+ ```javascript
654
+ // 将自动筛选器设置为从 A1 到 E1,并隐藏 A 列和 C 列的筛选按钮
655
+ worksheet.autoFilter = {
656
+ from: 'A1',
657
+ to: 'E1',
658
+ exclude: [0, 2],
659
+ }
660
+ ```
661
+
644
662
  ## 列[⬆](#目录)<!-- Link generated with jump2header -->
645
663
 
646
664
  ```javascript
@@ -2260,6 +2278,7 @@ CSV 解析器使用 [fast-csv](https://www.npmjs.com/package/fast-csv) 编写 CS
2260
2278
  * 将工作表添加到工作簿后,将无法将其删除。
2261
2279
  * 提交行后,将无法再访问该行,因为该行将从工作表中删除。
2262
2280
  * 不支持 `unMergeCells()`。
2281
+ * 图片(`worksheet.addImage()`、`worksheet.addBackgroundImage()`)必须在提交工作表之前添加。
2263
2282
 
2264
2283
  请注意,可以在不提交任何行的情况下构建整个工作簿。提交工作簿后,所有添加的工作表(包括所有未提交的行)将自动提交。但是,在这种情况下,与文档版本相比收效甚微。
2265
2284
 
@@ -2345,10 +2364,10 @@ await workbook.commit();
2345
2364
  | --------------------- | ----------- |
2346
2365
  | input (必需的) | 指定从中读取XLSX工作簿的文件或可读流的名称|
2347
2366
  | options (可选的) | 指定如何处理读取解析期间发生的事件类型 |
2348
- | options.entries | 指定是否去触发事件(`'emit'`)或者不发出事件(`'ignore'`),默认值是`'emit'` |
2367
+ | options.entries | 指定是否去触发事件(`'emit'`)或者不发出事件(`'ignore'`),默认值是`'ignore'` |
2349
2368
  | options.sharedStrings | 指定是否去缓存(`'cache'`)共享字符串,将其插入到相应的单元格值中,或者是否去触发(`'emit'`)或忽略(`'ignore'`)它们,在这两种情况下,单元格值都将是对共享字符串索引的引用。默认值是`'cache'` |
2350
- | options.hyperlinks | 指定是否去缓存超链接(`'cache'`),将其插入到相应的单元格值中,是否去触发(`'emit'`)或忽略(`'ignore'`)它们。默认值是`'cache'` |
2351
- | options.styles | 指定是否去缓存样式(`'cache'`),将其插入到相应的行或单元格值中,或是否忽略(`'忽略'`)它们。默认值是`'cache'` |
2369
+ | options.hyperlinks | 指定是否去缓存超链接(`'cache'`),将其插入到相应的单元格值中,是否去触发(`'emit'`)或忽略(`'ignore'`)它们。默认值是`'ignore'` |
2370
+ | options.styles | 指定是否去缓存样式(`'cache'`),将其插入到相应的行或单元格值中,或是否忽略(`'ignore'`)它们。默认值是`'ignore'`。需要设置为`'cache'`才能得到数字格式和`Date`类型的单元格值;设置为`'ignore'`时,日期会被读取为普通数字。 |
2352
2371
  | options.worksheets |指定是否去触发(`'emit'`)或忽略(`'ignore'`)工作表。默认值是`'emit'` |
2353
2372
 
2354
2373
  ```js
@@ -8,6 +8,9 @@ const {
8
8
  slideFormula
9
9
  } = require('../utils/shared-formula');
10
10
  const Note = require('./note');
11
+ const {
12
+ copyStyle
13
+ } = require('../utils/copy-style');
11
14
  // Cell requirements
12
15
  // Operate inside a worksheet
13
16
  // Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.
@@ -37,7 +40,8 @@ class Cell {
37
40
 
38
41
  // help GC by removing cyclic (and other) references
39
42
  destroy() {
40
- delete this.style;
43
+ delete this._style;
44
+ delete this._styleShared;
41
45
  delete this._value;
42
46
  delete this._row;
43
47
  delete this._column;
@@ -46,38 +50,59 @@ class Cell {
46
50
 
47
51
  // =========================================================================
48
52
  // Styles stuff
53
+
54
+ // Cells loaded from a file share one style object per xf. The object is only
55
+ // copied when the style is handed out (cell.style), so code that mutates it
56
+ // in place (cell.style.fill = ...) changes this cell alone.
57
+ get style() {
58
+ if (this._styleShared) {
59
+ this._style = copyStyle(this._style);
60
+ this._styleShared = false;
61
+ }
62
+ return this._style;
63
+ }
64
+ set style(value) {
65
+ this._style = value;
66
+ this._styleShared = false;
67
+ }
68
+
69
+ // use a style object that other cells may share (e.g. a cached xf style)
70
+ _setSharedStyle(style) {
71
+ this._style = style;
72
+ this._styleShared = true;
73
+ }
49
74
  get numFmt() {
50
- return this.style.numFmt;
75
+ return this._style.numFmt;
51
76
  }
52
77
  set numFmt(value) {
53
78
  this._setStyle('numFmt', value);
54
79
  }
55
80
  get font() {
56
- return this.style.font;
81
+ return this._style.font;
57
82
  }
58
83
  set font(value) {
59
84
  this._setStyle('font', value);
60
85
  }
61
86
  get alignment() {
62
- return this.style.alignment;
87
+ return this._style.alignment;
63
88
  }
64
89
  set alignment(value) {
65
90
  this._setStyle('alignment', value);
66
91
  }
67
92
  get border() {
68
- return this.style.border;
93
+ return this._style.border;
69
94
  }
70
95
  set border(value) {
71
96
  this._setStyle('border', value);
72
97
  }
73
98
  get fill() {
74
- return this.style.fill;
99
+ return this._style.fill;
75
100
  }
76
101
  set fill(value) {
77
102
  this._setStyle('fill', value);
78
103
  }
79
104
  get protection() {
80
- return this.style.protection;
105
+ return this._style.protection;
81
106
  }
82
107
  set protection(value) {
83
108
  this._setStyle('protection', value);
@@ -85,7 +110,7 @@ class Cell {
85
110
  _setStyle(name, value) {
86
111
  // style objects can be shared (e.g. by every cell loaded with the same xf),
87
112
  // so never mutate one in place; give this cell a new object instead
88
- const oldStyle = this.style;
113
+ const oldStyle = this._style;
89
114
  const style = {
90
115
  ...oldStyle,
91
116
  [name]: value
@@ -97,12 +122,12 @@ class Cell {
97
122
  const merges = master._mergeCount > 0 && this.worksheet._merges;
98
123
  // the streaming WorksheetWriter keeps its merges in an array
99
124
  const range = merges && (Array.isArray(merges) ? merges.find(merge => merge.top === master.row && merge.left === master.col) : merges[master.address]);
100
- if (range && (master === this || master.style === oldStyle)) {
125
+ if (range && (master === this || master._style === oldStyle)) {
101
126
  for (let r = range.top; r <= range.bottom; r++) {
102
127
  const row = this.worksheet.findRow(r);
103
128
  for (let c = range.left; row && c <= range.right; c++) {
104
129
  const cell = row.findCell(c);
105
- if (cell && cell.style === oldStyle) {
130
+ if (cell && cell._style === oldStyle) {
106
131
  cell.style = style;
107
132
  }
108
133
  }
@@ -310,7 +335,7 @@ class Cell {
310
335
  const {
311
336
  model
312
337
  } = this._value;
313
- model.style = this.style;
338
+ model.style = this._style;
314
339
  if (this._comment) {
315
340
  model.comment = this._comment.model;
316
341
  }
@@ -328,7 +353,7 @@ class Cell {
328
353
  }
329
354
  }
330
355
  if (value.style) {
331
- this.style = value.style;
356
+ this._setSharedStyle(value.style);
332
357
  } else {
333
358
  this.style = {};
334
359
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","names":["colCache","require","_","Enums","slideFormula","Note","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","numFmt","value","_setStyle","font","alignment","border","fill","protection","name","oldStyle","master","type","Merge","merges","_merges","range","Array","isArray","find","merge","top","left","col","r","bottom","findRow","c","right","cell","findCell","rowStyle","colStyle","number","$col$row","letter","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","add","model","comment","fromModel","ValueType","NullValue","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","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._setStyle('numFmt', value);\n }\n\n get font() {\n return this.style.font;\n }\n\n set font(value) {\n this._setStyle('font', value);\n }\n\n get alignment() {\n return this.style.alignment;\n }\n\n set alignment(value) {\n this._setStyle('alignment', value);\n }\n\n get border() {\n return this.style.border;\n }\n\n set border(value) {\n this._setStyle('border', value);\n }\n\n get fill() {\n return this.style.fill;\n }\n\n set fill(value) {\n this._setStyle('fill', value);\n }\n\n get protection() {\n return this.style.protection;\n }\n\n set protection(value) {\n this._setStyle('protection', value);\n }\n\n _setStyle(name, value) {\n // style objects can be shared (e.g. by every cell loaded with the same xf),\n // so never mutate one in place; give this cell a new object instead\n const oldStyle = this.style;\n const style = {...oldStyle, [name]: value};\n this.style = style;\n\n // merged cells share their master's style object, keep it that way\n const master = this.type === Cell.Types.Merge ? this.master : this;\n const merges = master._mergeCount > 0 && this.worksheet._merges;\n // the streaming WorksheetWriter keeps its merges in an array\n const range =\n merges &&\n (Array.isArray(merges)\n ? merges.find(merge => merge.top === master.row && merge.left === master.col)\n : merges[master.address]);\n if (range && (master === this || master.style === oldStyle)) {\n for (let r = range.top; r <= range.bottom; r++) {\n const row = this.worksheet.findRow(r);\n for (let c = range.left; row && c <= range.right; c++) {\n const cell = row.findCell(c);\n if (cell && cell.style === oldStyle) {\n cell.style = style;\n }\n }\n }\n }\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 !== undefined && value !== null) {\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":[]}
1
+ {"version":3,"file":"cell.js","names":["colCache","require","_","Enums","slideFormula","Note","copyStyle","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","_style","_styleShared","value","_setSharedStyle","numFmt","_setStyle","font","alignment","border","fill","protection","name","oldStyle","master","type","Merge","merges","_merges","range","Array","isArray","find","merge","top","left","col","r","bottom","findRow","c","right","cell","findCell","rowStyle","colStyle","number","$col$row","letter","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","add","model","comment","fromModel","ValueType","NullValue","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","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');\nconst {copyStyle} = require('../utils/copy-style');\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._styleShared;\n delete this._value;\n delete this._row;\n delete this._column;\n delete this._address;\n }\n\n // =========================================================================\n // Styles stuff\n\n // Cells loaded from a file share one style object per xf. The object is only\n // copied when the style is handed out (cell.style), so code that mutates it\n // in place (cell.style.fill = ...) changes this cell alone.\n get style() {\n if (this._styleShared) {\n this._style = copyStyle(this._style);\n this._styleShared = false;\n }\n return this._style;\n }\n\n set style(value) {\n this._style = value;\n this._styleShared = false;\n }\n\n // use a style object that other cells may share (e.g. a cached xf style)\n _setSharedStyle(style) {\n this._style = style;\n this._styleShared = true;\n }\n\n get numFmt() {\n return this._style.numFmt;\n }\n\n set numFmt(value) {\n this._setStyle('numFmt', value);\n }\n\n get font() {\n return this._style.font;\n }\n\n set font(value) {\n this._setStyle('font', value);\n }\n\n get alignment() {\n return this._style.alignment;\n }\n\n set alignment(value) {\n this._setStyle('alignment', value);\n }\n\n get border() {\n return this._style.border;\n }\n\n set border(value) {\n this._setStyle('border', value);\n }\n\n get fill() {\n return this._style.fill;\n }\n\n set fill(value) {\n this._setStyle('fill', value);\n }\n\n get protection() {\n return this._style.protection;\n }\n\n set protection(value) {\n this._setStyle('protection', value);\n }\n\n _setStyle(name, value) {\n // style objects can be shared (e.g. by every cell loaded with the same xf),\n // so never mutate one in place; give this cell a new object instead\n const oldStyle = this._style;\n const style = {...oldStyle, [name]: value};\n this.style = style;\n\n // merged cells share their master's style object, keep it that way\n const master = this.type === Cell.Types.Merge ? this.master : this;\n const merges = master._mergeCount > 0 && this.worksheet._merges;\n // the streaming WorksheetWriter keeps its merges in an array\n const range =\n merges &&\n (Array.isArray(merges)\n ? merges.find(merge => merge.top === master.row && merge.left === master.col)\n : merges[master.address]);\n if (range && (master === this || master._style === oldStyle)) {\n for (let r = range.top; r <= range.bottom; r++) {\n const row = this.worksheet.findRow(r);\n for (let c = range.left; row && c <= range.right; c++) {\n const cell = row.findCell(c);\n if (cell && cell._style === oldStyle) {\n cell.style = style;\n }\n }\n }\n }\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._setSharedStyle(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 !== undefined && value !== null) {\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":[]}