sheetnext 0.2.4 → 0.2.7

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.
@@ -1,6 +1,6 @@
1
1
  # Core API
2
2
 
3
- > Generated: 2026-03-27
3
+ > Generated: 2026-04-28
4
4
 
5
5
  Public callable classes detected for the generated API surface.
6
6
 
@@ -126,13 +126,16 @@ budgetSheet.getCell('A1').value = 'Month';
126
126
  budgetSheet.getCell('B1').value = 'Amount';
127
127
  ```
128
128
 
129
- #### `delSheet(name)`
129
+ #### `delSheet(name): boolean | void`
130
130
 
131
131
  **Parameters**
132
132
  | Name | Type | Required | Default | Description |
133
133
  | --- | --- | --- | --- | --- |
134
134
  | name | string | Yes | - | - |
135
135
 
136
+ **Returns**
137
+ - Type: `boolean | void`
138
+
136
139
  #### `getSheet(sheetName): Sheet | null`
137
140
 
138
141
  **Parameters**
@@ -151,6 +154,17 @@ if (sheet) {
151
154
  }
152
155
  ```
153
156
 
157
+ #### `moveSheet(sheetOrName, targetIndex): boolean`
158
+
159
+ **Parameters**
160
+ | Name | Type | Required | Default | Description |
161
+ | --- | --- | --- | --- | --- |
162
+ | sheetOrName | Sheet \| string | Yes | - | - |
163
+ | targetIndex | number | Yes | - | - |
164
+
165
+ **Returns**
166
+ - Type: `boolean`
167
+
154
168
  #### `recalculate(currentSheetOnly = false)`
155
169
 
156
170
  **Parameters**
@@ -412,7 +426,7 @@ SN.activeSheet.eachCells('A1:C3', (r, c) => {
412
426
  #### `hyperlinkJump()`
413
427
  - Jump to hyperlink target of active cell.
414
428
 
415
- #### `rangeSort(sortKeys, range?)`
429
+ #### `rangeSort(sortKeys, range?, options = {}): boolean`
416
430
  - Category: `Sort`
417
431
 
418
432
  **Parameters**
@@ -420,6 +434,11 @@ SN.activeSheet.eachCells('A1:C3', (r, c) => {
420
434
  | --- | --- | --- | --- | --- |
421
435
  | sortKeys | Array<{col:string \| number, order?:string, customOrder?:Array}> | Yes | - | - |
422
436
  | range | RangeRef | No | - | - |
437
+ | options | {hasHeader?:boolean, caseSensitive?:boolean} | No | {} | - |
438
+
439
+ **Returns**
440
+ - Type: `boolean`
441
+ - Sort sheet range.
423
442
 
424
443
  **Examples**
425
444
  ```js
@@ -519,14 +538,14 @@ sheet.rangeSort([
519
538
  | --- | --- | --- | --- | --- |
520
539
  | range | string \| Object \| Array<string \| Object> | Yes | - | - |
521
540
 
522
- #### `insertTable(arr, pos, options = {}, ops?): RangeNum`
523
- - Insert a table from the given position
541
+ #### `insertTemplate(arr, pos, options = {}, ops?): RangeNum`
542
+ - Insert a template from the given position.
524
543
  - Category: `InsertTable`
525
544
 
526
545
  **Parameters**
527
546
  | Name | Type | Required | Default | Description |
528
547
  | --- | --- | --- | --- | --- |
529
- | arr | (ICellConfig \| string \| number)[][] | Yes | - | Table data array |
548
+ | arr | (ICellConfig \| string \| number)[][] | Yes | - | Template data array |
530
549
  | pos | CellRef | Yes | - | Insert Location |
531
550
  | options | Object | No | {} | Configure Options |
532
551
  | ops | {align?:string,border?:boolean,width?:number,height?:number} | No | - | - |
@@ -565,7 +584,7 @@ const meetingTemplate = [
565
584
  [{ v: 'Remarks', h: 80 }, { mr: 2 }, '', '']
566
585
  ];
567
586
 
568
- sheet.insertTable(meetingTemplate, 'A1', {
587
+ sheet.insertTemplate(meetingTemplate, 'A1', {
569
588
  border: true,
570
589
  align: 'center',
571
590
  height: 30,
@@ -633,102 +652,90 @@ sheet.insertTable(meetingTemplate, 'A1', {
633
652
  | mode | String | No | 'default' | Mode: 'default' \|center' \|content'same' |
634
653
  | range | RangeRef | Yes | - | - |
635
654
 
636
- #### `addRows(r, number = 1, index, count)`
655
+ #### `addRows(r, number = 1)`
637
656
  - Insert Row
638
657
  - Category: `RowColHandler`
639
658
 
640
659
  **Parameters**
641
660
  | Name | Type | Required | Default | Description |
642
661
  | --- | --- | --- | --- | --- |
643
- | r | Number | Yes | - | Row Index to Insert Location |
644
- | number | Number | No | 1 | Number of rows inserted |
645
- | index | number | Yes | - | - |
646
- | count | number | Yes | - | - |
662
+ | r | number | Yes | - | Row Index to Insert Location |
663
+ | number | number | No | 1 | Number of rows inserted |
647
664
 
648
- #### `addCols(c, number = 1, index, count)`
665
+ #### `addCols(c, number = 1)`
649
666
  - Insert Columns
650
667
  - Category: `RowColHandler`
651
668
 
652
669
  **Parameters**
653
670
  | Name | Type | Required | Default | Description |
654
671
  | --- | --- | --- | --- | --- |
655
- | c | Number | Yes | - | Index of columns for inserting positions |
656
- | number | Number | No | 1 | Number of columns inserted |
657
- | index | number | Yes | - | - |
658
- | count | number | Yes | - | - |
672
+ | c | number | Yes | - | Index of columns for inserting positions |
673
+ | number | number | No | 1 | Number of columns inserted |
659
674
 
660
- #### `delRows(r, number = 1, start, count)`
675
+ #### `delRows(r, number = 1)`
661
676
  - Delete Row
662
677
  - Category: `RowColHandler`
663
678
 
664
679
  **Parameters**
665
680
  | Name | Type | Required | Default | Description |
666
681
  | --- | --- | --- | --- | --- |
667
- | r | Number | Yes | - | Remove Row Index at Start Location |
668
- | number | Number | No | 1 | Number of rows deleted |
669
- | start | number | Yes | - | - |
670
- | count | number | Yes | - | - |
682
+ | r | number | Yes | - | Remove Row Index at Start Location |
683
+ | number | number | No | 1 | Number of rows deleted |
671
684
 
672
- #### `delCols(c, number = 1, start, count)`
685
+ #### `delCols(c, number = 1)`
673
686
  - Delete Column
674
687
  - Category: `RowColHandler`
675
688
 
676
689
  **Parameters**
677
690
  | Name | Type | Required | Default | Description |
678
691
  | --- | --- | --- | --- | --- |
679
- | c | Number | Yes | - | Delete column index for starting position |
680
- | number | Number | No | 1 | NUMBER OF ROWS REMOVED |
681
- | start | number | Yes | - | - |
682
- | count | number | Yes | - | - |
692
+ | c | number | Yes | - | Delete column index for starting position |
693
+ | number | number | No | 1 | NUMBER OF ROWS REMOVED |
683
694
 
684
695
  #### `getCellInViewInfo(rowIndex, colIndex, posMerge = true, r, c): Object`
685
- - Fetch cell information in visible view
696
+ - Fetch cell information in visible view.
686
697
  - Category: `ViewCalculator`
687
698
 
688
699
  **Parameters**
689
700
  | Name | Type | Required | Default | Description |
690
701
  | --- | --- | --- | --- | --- |
691
702
  | rowIndex | Number | Yes | - | Row index |
692
- | colIndex | Number | Yes | - | Column Index |
703
+ | colIndex | Number | Yes | - | Column index |
693
704
  | posMerge | Boolean | No | true | Whether to process merging cells |
694
705
  | r | number | Yes | - | - |
695
706
  | c | number | Yes | - | - |
696
707
 
697
708
  **Returns**
698
709
  - Type: `Object`
699
- - Objects with location and size information
700
710
 
701
711
  #### `getAreaInviewInfo(area): Object`
702
- - Fetch area information in visible view
712
+ - Fetch clipped area information in visible view.
703
713
  - Category: `ViewCalculator`
704
714
 
705
715
  **Parameters**
706
716
  | Name | Type | Required | Default | Description |
707
717
  | --- | --- | --- | --- | --- |
708
- | area | Object | Yes | - | Area Object |
718
+ | area | Object | Yes | - | Area object |
709
719
 
710
720
  **Returns**
711
721
  - Type: `Object`
712
- - Objects with location and size information
713
722
 
714
723
  #### `getTotalHeight(): number`
715
- - Retrieving the total height of all rows (cache optimization)
724
+ - Retrieving the total height of all rows.
716
725
  - Category: `ViewCalculator`
717
726
 
718
727
  **Returns**
719
728
  - Type: `number`
720
- - Total Height
721
729
 
722
730
  #### `getTotalWidth(): number`
723
- - Get the total width of all columns (cache optimization)
731
+ - Get the total width of all columns.
724
732
  - Category: `ViewCalculator`
725
733
 
726
734
  **Returns**
727
735
  - Type: `number`
728
- - Total width
729
736
 
730
737
  #### `getScrollTop(rowIndex): number`
731
- - Get the sum of heights for all lines before the specified line
738
+ - Get the sum of heights before the specified row.
732
739
  - Category: `ViewCalculator`
733
740
 
734
741
  **Parameters**
@@ -738,46 +745,42 @@ sheet.insertTable(meetingTemplate, 'A1', {
738
745
 
739
746
  **Returns**
740
747
  - Type: `number`
741
- - High Sum
742
748
 
743
749
  #### `getScrollLeft(colIndex): number`
744
- - Sum of widths of all columns before the specified column
750
+ - Sum of widths before the specified column.
745
751
  - Category: `ViewCalculator`
746
752
 
747
753
  **Parameters**
748
754
  | Name | Type | Required | Default | Description |
749
755
  | --- | --- | --- | --- | --- |
750
- | colIndex | number | Yes | - | Column Index |
756
+ | colIndex | number | Yes | - | Column index |
751
757
 
752
758
  **Returns**
753
759
  - Type: `number`
754
- - Sum of width
755
760
 
756
761
  #### `getRowIndexByScrollTop(scrollTop): number`
757
- - Find line index from vertical scroll pixel position
762
+ - Find row index from vertical scroll pixel position.
758
763
  - Category: `ViewCalculator`
759
764
 
760
765
  **Parameters**
761
766
  | Name | Type | Required | Default | Description |
762
767
  | --- | --- | --- | --- | --- |
763
- | scrollTop | number | Yes | - | Scroll Pixels Position |
768
+ | scrollTop | number | Yes | - | Scroll pixels position |
764
769
 
765
770
  **Returns**
766
771
  - Type: `number`
767
- - Line Index
768
772
 
769
773
  #### `getColIndexByScrollLeft(scrollLeft): number`
770
- - Find the corresponding column index from the horizontal scroll pixel position
774
+ - Find column index from horizontal scroll pixel position.
771
775
  - Category: `ViewCalculator`
772
776
 
773
777
  **Parameters**
774
778
  | Name | Type | Required | Default | Description |
775
779
  | --- | --- | --- | --- | --- |
776
- | scrollLeft | number | Yes | - | Scroll Pixels Position |
780
+ | scrollLeft | number | Yes | - | Scroll pixels position |
777
781
 
778
782
  **Returns**
779
783
  - Type: `number`
780
- - Column Index
781
784
 
782
785
  #### `copy(area = null, isCut = false, areas?)`
783
786
  - Copy Regional Data
@@ -833,6 +836,63 @@ sheet.insertTable(meetingTemplate, 'A1', {
833
836
  **Returns**
834
837
  - Type: `boolean`
835
838
 
839
+ #### `setCellControl(range, control)`
840
+ - Category: `CellControl`
841
+
842
+ **Parameters**
843
+ | Name | Type | Required | Default | Description |
844
+ | --- | --- | --- | --- | --- |
845
+ | range | string \| Object \| Array<string \| Object> | Yes | - | - |
846
+ | control | Object | Yes | - | - |
847
+
848
+ #### `clearCellControl(range)`
849
+ - Category: `CellControl`
850
+
851
+ **Parameters**
852
+ | Name | Type | Required | Default | Description |
853
+ | --- | --- | --- | --- | --- |
854
+ | range | string \| Object \| Array<string \| Object> | Yes | - | - |
855
+
856
+ #### `toggleCheckbox(row, col): boolean`
857
+ - Category: `CellControl`
858
+
859
+ **Parameters**
860
+ | Name | Type | Required | Default | Description |
861
+ | --- | --- | --- | --- | --- |
862
+ | row | number | Yes | - | - |
863
+ | col | number | Yes | - | - |
864
+
865
+ **Returns**
866
+ - Type: `boolean`
867
+
868
+ #### `setCheckboxValue(range, checked)`
869
+ - Category: `CellControl`
870
+
871
+ **Parameters**
872
+ | Name | Type | Required | Default | Description |
873
+ | --- | --- | --- | --- | --- |
874
+ | range | string \| Object \| Array<string \| Object> | Yes | - | - |
875
+ | checked | boolean | Yes | - | - |
876
+
877
+ #### `deleteCheckboxControlOrValue(range)`
878
+ - Category: `CellControl`
879
+
880
+ **Parameters**
881
+ | Name | Type | Required | Default | Description |
882
+ | --- | --- | --- | --- | --- |
883
+ | range | string \| Object \| Array<string \| Object> | Yes | - | - |
884
+
885
+ #### `hasCheckboxControl(range): boolean`
886
+ - Category: `CellControl`
887
+
888
+ **Parameters**
889
+ | Name | Type | Required | Default | Description |
890
+ | --- | --- | --- | --- | --- |
891
+ | range | string \| Object \| Array<string \| Object> | Yes | - | - |
892
+
893
+ **Returns**
894
+ - Type: `boolean`
895
+
836
896
  ## Row
837
897
  - Row Objects
838
898
 
@@ -887,7 +947,7 @@ sheet.insertTable(meetingTemplate, 'A1', {
887
947
  ### Get
888
948
  | Name | Type | Static | Description |
889
949
  | --- | --- | --- | --- |
890
- | cells | Array<Cell> | No | Get all cells in a column |
950
+ | cells | Array<Cell> | No | Sparse cells indexed by row |
891
951
 
892
952
  ## Cell
893
953
  - Cell classes
@@ -908,6 +968,7 @@ sheet.insertTable(meetingTemplate, 'A1', {
908
968
  | hyperlink | Object \| null | get/set | No | Hyperlink Configuration |
909
969
  | dataValidation | Object \| null | get/set | No | Data Validation Configuration |
910
970
  | protection | {locked: boolean, hidden: boolean} | get/set | No | Cell Protection Configuration |
971
+ | control | Object \| null | get/set | No | Cell control configuration. |
911
972
  | type | string | get/set | No | Cell Type |
912
973
  | style | Object | get/set | No | Cell Styles |
913
974
  | border | Object | get/set | No | Border Style |
@@ -930,7 +991,6 @@ sheet.insertTable(meetingTemplate, 'A1', {
930
991
  | isLocked | boolean | No | Is it locked |
931
992
  | validData | boolean | No | Data validation results |
932
993
  | isFormula | boolean | No | Is it a formula |
933
- | buildXml | Object | No | Build Cell XML |
934
994
 
935
995
  ## Canvas
936
996
  - Canvas Rendering and Interaction Management
@@ -949,6 +1009,7 @@ sheet.insertTable(meetingTemplate, 'A1', {
949
1009
  | handleLayer | HTMLCanvasElement | No | SN.containerDom.querySelector(".sn-handle-layer") | Operating Layer Canvas |
950
1010
  | buffer | HTMLCanvasElement | No | document.createElement('canvas') | Buffer Canvas |
951
1011
  | showLayerKZ | HTMLCanvasElement | No | document.createElement('canvas') | Snapshot Canvas |
1012
+ | scrollSkeletonLayer | HTMLCanvasElement | No | document.createElement('canvas') | Scroll loading skeleton layer |
952
1013
  | pCanvas | HTMLCanvasElement | No | document.createElement('canvas') | Brush preview canvas |
953
1014
  | pCtx | CanvasRenderingContext2D | No | this.pCanvas.getContext('2d') | Brush Preview Context |
954
1015
  | activeBorderInfo | Object \| null | No | null | Current Active Border Information |
@@ -968,6 +1029,7 @@ sheet.insertTable(meetingTemplate, 'A1', {
968
1029
  | rollY | HTMLElement | No | SN.containerDom.querySelector('.sn-roll-y') | Portrait scrollbar |
969
1030
  | rollYS | HTMLElement | No | SN.containerDom.querySelector('.sn-roll-y>div') | Portrait Scrollbar Slider |
970
1031
  | drawingsCon | HTMLElement | No | SN.containerDom.querySelector('.sn-drawings-con') | Graphics Container |
1032
+ | middleLayer | - | No | SN.containerDom.querySelector('.sn-middle-layer') | - |
971
1033
  | slicersCon | HTMLElement | No | SN.containerDom.querySelector('.sn-slicers-con') | Slicer Container |
972
1034
  | maxTop | number | No | 0 | Maximum longitudinal scrolling distance |
973
1035
  | maxLeft | number | No | 0 | Maximum lateral scrolling distance |
@@ -1108,6 +1170,24 @@ sheet.insertTable(meetingTemplate, 'A1', {
1108
1170
  #### `updateOverlayContainers(): void`
1109
1171
  - Update Overlay Container Dimensions
1110
1172
 
1173
+ #### `scrollByPixels(deltaX = 0, deltaY = 0, options = {})`
1174
+
1175
+ **Parameters**
1176
+ | Name | Type | Required | Default | Description |
1177
+ | --- | --- | --- | --- | --- |
1178
+ | deltaX | number | No | 0 | - |
1179
+ | deltaY | number | No | 0 | - |
1180
+ | options | Object | No | {} | - |
1181
+
1182
+ #### `scrollToPixels(scrollLeft, scrollTop, options = {})`
1183
+
1184
+ **Parameters**
1185
+ | Name | Type | Required | Default | Description |
1186
+ | --- | --- | --- | --- | --- |
1187
+ | scrollLeft | - | Yes | - | - |
1188
+ | scrollTop | - | Yes | - | - |
1189
+ | options | Object | No | {} | - |
1190
+
1111
1191
  #### `updateScrollBar(): void`
1112
1192
  - Update scrollbar position
1113
1193
 
@@ -1384,44 +1464,40 @@ sheet.insertTable(meetingTemplate, 'A1', {
1384
1464
  | dataBar | - | Yes | - | - |
1385
1465
 
1386
1466
  #### `rFilterIcons(sheet)`
1387
- - Render Filter Icon
1388
1467
  - Category: `FilterRenderer`
1389
1468
 
1390
1469
  **Parameters**
1391
1470
  | Name | Type | Required | Default | Description |
1392
1471
  | --- | --- | --- | --- | --- |
1393
- | sheet | Sheet | Yes | - | Sheet Objects |
1472
+ | sheet | Sheet | Yes | - | - |
1394
1473
 
1395
1474
  #### `clearFilterIconPositions()`
1396
- - Clear filter icon position information
1397
1475
  - Category: `FilterRenderer`
1398
1476
 
1399
1477
  #### `getFilterIconAtPosition(x, y): {colIndex:number, scopeId:string} | null`
1400
- - Detect if the click location is on the filter icon
1401
1478
  - Category: `FilterRenderer`
1402
1479
 
1403
1480
  **Parameters**
1404
1481
  | Name | Type | Required | Default | Description |
1405
1482
  | --- | --- | --- | --- | --- |
1406
- | x | number | Yes | - | Click on the X coordinates |
1407
- | y | number | Yes | - | Click on the Y position |
1483
+ | x | number | Yes | - | - |
1484
+ | y | number | Yes | - | - |
1408
1485
 
1409
1486
  **Returns**
1410
1487
  - Type: `{colIndex:number, scopeId:string} | null`
1411
1488
 
1412
1489
  #### `drawFilterIcon(ctx, iconX, iconY, iconSize, hasFilter, sortOrder)`
1413
- - Draw a single filter icon (Excel style drop-down button)
1414
1490
  - Category: `FilterRenderer`
1415
1491
 
1416
1492
  **Parameters**
1417
1493
  | Name | Type | Required | Default | Description |
1418
1494
  | --- | --- | --- | --- | --- |
1419
- | ctx | - | Yes | - | - |
1420
- | iconX | - | Yes | - | - |
1421
- | iconY | - | Yes | - | - |
1422
- | iconSize | - | Yes | - | - |
1423
- | hasFilter | - | Yes | - | - |
1424
- | sortOrder | - | Yes | - | - |
1495
+ | ctx | CanvasRenderingContext2D | Yes | - | - |
1496
+ | iconX | number | Yes | - | - |
1497
+ | iconY | number | Yes | - | - |
1498
+ | iconSize | number | Yes | - | - |
1499
+ | hasFilter | boolean | Yes | - | - |
1500
+ | sortOrder | string \| null | Yes | - | - |
1425
1501
 
1426
1502
  #### `rPivotTablePlaceholders(sheet)`
1427
1503
  - Render PivotTable Placeholder
@@ -1443,6 +1519,12 @@ sheet.insertTable(meetingTemplate, 'A1', {
1443
1519
  | x | number | Yes | - | Mouse X coordinates |
1444
1520
  | y | number | Yes | - | Mouse Y coordinates<br>@ returns {PivotTable \| null} Returns null if a PivotTable instance is returned within an area |
1445
1521
 
1522
+ ### Potential Lifecycle Props
1523
+ - Assigned outside the constructor. These are flagged for audit because they may be public state that the scanner should not silently miss.
1524
+ | Name | Static | Source Line | Example Assignment |
1525
+ | --- | --- | --- | --- |
1526
+ | SKctx | No | 354 | this.scrollSkeletonLayer.getContext('2d') |
1527
+
1446
1528
  ## Layout
1447
1529
  - Layout & Toolbar Management
1448
1530
 
@@ -1566,6 +1648,72 @@ sheet.insertTable(meetingTemplate, 'A1', {
1566
1648
  ## Formula
1567
1649
  - Formula Calculator
1568
1650
 
1651
+ ### Props
1652
+ | Name | Type | Static | Default | Description |
1653
+ | --- | --- | --- | --- | --- |
1654
+ | SN | - | No | SN | - |
1655
+
1656
+ ### Get
1657
+ | Name | Type | Static | Description |
1658
+ | --- | --- | --- | --- |
1659
+ | lastCalcVolatile | boolean | No | Whether the last calculation was volatile |
1660
+ | lastResultIsDate | boolean | No | Whether the last calculated result is a date type |
1661
+
1662
+ ### Methods
1663
+ #### `calcFormula(formulaStr, cell): any`
1664
+ - Calculation Formula
1665
+
1666
+ **Parameters**
1667
+ | Name | Type | Required | Default | Description |
1668
+ | --- | --- | --- | --- | --- |
1669
+ | formulaStr | string | Yes | - | Equation String (without Equals) |
1670
+ | cell | Cell | Yes | - | Current Cell |
1671
+
1672
+ **Returns**
1673
+ - Type: `any`
1674
+
1675
+ #### `parseDeps(formulaOrAst, defaultSheetName = null): {sheetName:string | null,r:number,c:number}[]`
1676
+ - Extract all dependent cell coordinates from a formula AST/string.
1677
+
1678
+ **Parameters**
1679
+ | Name | Type | Required | Default | Description |
1680
+ | --- | --- | --- | --- | --- |
1681
+ | formulaOrAst | string \| Object | Yes | - | Formula string without equals or parsed AST |
1682
+ | defaultSheetName | string | No | null | Sheet name used by local references |
1683
+
1684
+ **Returns**
1685
+ - Type: `{sheetName:string | null,r:number,c:number}[]`
1686
+
1687
+ #### `parseDependencyAreas(formulaOrAst, defaultSheetName = null): {sheetName:string | null,s:{r:number,c:number},e:{r:number,c:number}}[]`
1688
+ - Extract dependency areas without expanding large ranges.
1689
+
1690
+ **Parameters**
1691
+ | Name | Type | Required | Default | Description |
1692
+ | --- | --- | --- | --- | --- |
1693
+ | formulaOrAst | string \| Object | Yes | - | Formula string without equals or parsed AST |
1694
+ | defaultSheetName | string | No | null | Sheet name used by local references |
1695
+
1696
+ **Returns**
1697
+ - Type: `{sheetName:string | null,s:{r:number,c:number},e:{r:number,c:number}}[]`
1698
+
1699
+ #### `executeFunction(funcName, stack): any`
1700
+ - Execute Function
1701
+
1702
+ **Parameters**
1703
+ | Name | Type | Required | Default | Description |
1704
+ | --- | --- | --- | --- | --- |
1705
+ | funcName | string | Yes | - | Function name |
1706
+ | stack | Array | Yes | - | Parameter Stack |
1707
+
1708
+ **Returns**
1709
+ - Type: `any`
1710
+
1711
+ ### Potential Lifecycle Props
1712
+ - Assigned outside the constructor. These are flagged for audit because they may be public state that the scanner should not silently miss.
1713
+ | Name | Static | Source Line | Example Assignment |
1714
+ | --- | --- | --- | --- |
1715
+ | currentCell | No | 79 | cell |
1716
+
1569
1717
  ## AutoFilter
1570
1718
 
1571
1719
  ### Props
@@ -2559,6 +2707,31 @@ sparkline.add({
2559
2707
  **Returns**
2560
2708
  - Type: `Object | null`
2561
2709
 
2710
+ ## FormulaAstParser
2711
+
2712
+ ### Methods
2713
+ #### `parse()`
2714
+
2715
+ ## FormulaError
2716
+
2717
+ ### Props
2718
+ | Name | Type | Static | Default | Description |
2719
+ | --- | --- | --- | --- | --- |
2720
+ | name | string | No | 'FormulaError' | - |
2721
+ | code | - | No | this.message | - |
2722
+
2723
+ ## FormulaLexer
2724
+
2725
+ ### Methods
2726
+ #### `scan()`
2727
+
2728
+ ## FormulaParseError
2729
+
2730
+ ### Props
2731
+ | Name | Type | Static | Default | Description |
2732
+ | --- | --- | --- | --- | --- |
2733
+ | name | string | No | 'FormulaParseError' | - |
2734
+
2562
2735
  ## CF
2563
2736
  - CF conditional formatting Manager<br>Responsible for parsing, storing and managing Excel conditional formatting rules
2564
2737
 
@@ -1,6 +1,6 @@
1
1
  # Enum API
2
2
 
3
- > Generated: 2026-03-27
3
+ > Generated: 2026-04-28
4
4
 
5
5
  ## Enum Types
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Event API
2
2
 
3
- > Generated: 2026-03-27
3
+ > Generated: 2026-04-28
4
4
 
5
5
  ## Subscription surface
6
6
 
@@ -157,7 +157,7 @@ SN.Event.once('afterSheetAdd', (e) => {
157
157
 
158
158
  ## Emitted events
159
159
 
160
- - Total detected events: 114
160
+ - Total detected events: 120
161
161
  - Dynamic event patterns: 7
162
162
 
163
163
  ### Col
@@ -172,6 +172,7 @@ SN.Event.once('afterSheetAdd', (e) => {
172
172
  | Event | Mode | Cancelable | Payload Keys |
173
173
  | --- | --- | --- | --- |
174
174
  | after${eventSuffix} | emit | No | [indexKey], changedCount, limitedCount, maxLevel, sheet |
175
+ | afterClearCellControl | emit | No | ...summary, sheet |
175
176
  | afterClearDataValidation | emit | No | ...summary, sheet |
176
177
  | afterConsolidate | emit | No | ...summary, sheet |
177
178
  | afterDeleteColumns | emit | No | col, count, sheet |
@@ -182,14 +183,15 @@ SN.Event.once('afterSheetAdd', (e) => {
182
183
  | afterMerge | emit | No | areas, mode, sheet |
183
184
  | afterMoveArea | emit | No | moveArea, sheet, targetArea |
184
185
  | afterSelectionChange | emit | No | newAreas, newCell, oldAreas, oldCell, sheet, type |
186
+ | afterSetCellControl | emit | No | ...summary, control, sheet |
185
187
  | afterSetDataValidation | emit | No | ...summary, sheet |
186
188
  | afterSheetRename | emit | No | newName, oldName, sheet |
187
- | afterSort | emit | No | range, sheet, sortKeys, success |
189
+ | afterSort | emit | No | options, range, sheet, sortKeys, success |
188
190
  | afterSubtotal | emit | No | ...summary, options, sheet |
189
191
  | afterTextToColumns | emit | No | columnCount, rowCount, sheet, sourceRange, targetRange |
190
192
  | afterUnmerge | emit | No | cellAd, sheet |
191
- | afterZoomChange | emit | No | newZoom, oldZoom, sheet |
192
193
  | before${eventSuffix} | emit | No | [indexKey], areas, maxLevel, sheet |
194
+ | beforeClearCellControl | emit | No | areas, sheet |
193
195
  | beforeClearDataValidation | emit | No | areas, sheet |
194
196
  | beforeConsolidate | emit | No | functionName, sheet, skipBlanks, sourceRanges, targetRange |
195
197
  | beforeDeleteColumns | emit | No | col, count, sheet |
@@ -200,13 +202,13 @@ SN.Event.once('afterSheetAdd', (e) => {
200
202
  | beforeMerge | emit | No | areas, mode, sheet |
201
203
  | beforeMoveArea | emit | No | moveArea, sheet, targetArea |
202
204
  | beforeSelectionChange | emit | No | newAreas, newCell, oldAreas, oldCell, sheet, type |
205
+ | beforeSetCellControl | emit | No | areas, control, sheet |
203
206
  | beforeSetDataValidation | emit | No | areas, rule, sheet |
204
207
  | beforeSheetRename | emit | No | newName, oldName, sheet |
205
- | beforeSort | emit | No | range, sheet, sortKeys |
208
+ | beforeSort | emit | No | options, range, sheet, sortKeys |
206
209
  | beforeSubtotal | emit | No | options, range, sheet |
207
210
  | beforeTextToColumns | emit | No | options, sheet, sourceRange, targetRange |
208
211
  | beforeUnmerge | emit | No | cellAd, sheet |
209
- | beforeZoomChange | emit | No | newZoom, oldZoom, sheet |
210
212
 
211
213
  ### Workbook
212
214
  | Event | Mode | Cancelable | Payload Keys |
@@ -216,12 +218,14 @@ SN.Event.once('afterSheetAdd', (e) => {
216
218
  | afterOperation:${op.type} | emitAsync | No | - |
217
219
  | afterSheetAdd | emit | No | name, sheet |
218
220
  | afterSheetDelete | emit | No | index, name, sheet |
221
+ | afterSheetMove | emit | No | fromIndex, sheet, toIndex |
219
222
  | afterWorkbookRename | emit | No | newName, oldName |
220
223
  | beforeActiveSheetChange | emit | No | newSheet, oldSheet |
221
224
  | beforeOperation | emit | No | ...data, operation |
222
225
  | beforeOperation:${type} | emit | No | ...data, operation |
223
226
  | beforeSheetAdd | emit | No | name |
224
227
  | beforeSheetDelete | emit | No | index, name, sheet |
228
+ | beforeSheetMove | emit | No | fromIndex, sheet, toIndex |
225
229
  | beforeWorkbookRename | emit | No | newName, oldName |
226
230
 
227
231
  ### AI
@@ -325,6 +329,12 @@ SN.Event.once('afterSheetAdd', (e) => {
325
329
  | beforeTableStyleChange | emit | No | newStyle, oldStyle, sheet, table |
326
330
  | beforeTableTotalsRowToggle | emit | No | newValue, oldValue, sheet, table |
327
331
 
332
+ ### Canvas
333
+ | Event | Mode | Cancelable | Payload Keys |
334
+ | --- | --- | --- | --- |
335
+ | afterZoomChange | emit | No | newZoom, oldZoom, sheet |
336
+ | beforeZoomChange | emit | No | newZoom, oldZoom, sheet |
337
+
328
338
  ### Comment
329
339
  | Event | Mode | Cancelable | Payload Keys |
330
340
  | --- | --- | --- | --- |