@mog-sdk/node 0.1.11 → 0.1.13

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.
package/dist/index.d.cts CHANGED
@@ -16,13 +16,13 @@ export type IKernelContext = any;
16
16
  export type IEventBus = any;
17
17
 
18
18
 
19
- import { Workbook, WorkbookInternal, Worksheet } from '@mog/spreadsheet-contracts/api';
20
- export { Workbook, Worksheet } from '@mog/spreadsheet-contracts/api';
19
+ import { Workbook, WorkbookInternal, Worksheet } from '@mog-sdk/spreadsheet-contracts/api';
20
+ export { Workbook, Worksheet } from '@mog-sdk/spreadsheet-contracts/api';
21
21
  import * as _mog_kernel_bridges from '@mog/kernel/bridges';
22
22
 
23
23
 
24
24
 
25
- import { CodeExecutionOptions, CodeExecutionResult } from '@mog/spreadsheet-contracts/core';
25
+ import { CodeExecutionOptions, CodeExecutionResult } from '@mog-sdk/spreadsheet-contracts/core';
26
26
 
27
27
  /**
28
28
  * Save a workbook to a file path. Node.js only.
@@ -113,6 +113,7 @@ var subApis = {
113
113
  viewport: "WorkbookViewport"
114
114
  },
115
115
  ws: {
116
+ whatIf: "WorksheetWhatIf",
116
117
  smartArt: "WorksheetSmartArt",
117
118
  changes: "WorksheetChanges",
118
119
  formats: "WorksheetFormats",
@@ -219,10 +220,12 @@ var interfaces = {
219
220
  ]
220
221
  },
221
222
  calculate: {
222
- signature: "calculate(calculationType?: CalculationType): Promise<void>;",
223
- docstring: "Trigger recalculation of formulas.\n@param calculationType - Type of recalculation (default: 'full')\n - 'recalculate' recalculate dirty cells only\n - 'full' — recalculate all cells\n - 'fullRebuild' — rebuild dependency graph and recalculate all",
223
+ signature: "calculate(options?: CalculateOptions | CalculationType): Promise<CalculateResult>;",
224
+ docstring: "Trigger recalculation of formulas.\n@param options - Calculation options, or a CalculationType string for backward compatibility",
224
225
  usedTypes: [
225
- "CalculationType"
226
+ "CalculateOptions",
227
+ "CalculationType",
228
+ "CalculateResult"
226
229
  ]
227
230
  },
228
231
  getCalculationMode: {
@@ -245,19 +248,19 @@ var interfaces = {
245
248
  },
246
249
  setIterativeCalculation: {
247
250
  signature: "setIterativeCalculation(enabled: boolean): Promise<void>;",
248
- docstring: "Set whether iterative calculation is enabled for circular references.\nConvenience mutator — patches `calculationSettings.enableIterativeCalculation`.",
251
+ docstring: "Set whether iterative calculation is enabled for circular references.\nConvenience mutator — patches `calculationSettings.enableIterativeCalculation`.\n@deprecated Use calculate({ iterative: ... }) instead.",
249
252
  usedTypes: [
250
253
  ]
251
254
  },
252
255
  setMaxIterations: {
253
256
  signature: "setMaxIterations(n: number): Promise<void>;",
254
- docstring: "Set the maximum number of iterations for iterative calculation.\nConvenience mutator — patches `calculationSettings.maxIterations`.",
257
+ docstring: "Set the maximum number of iterations for iterative calculation.\nConvenience mutator — patches `calculationSettings.maxIterations`.\n@deprecated Use calculate({ iterative: { maxIterations: n } }) instead.",
255
258
  usedTypes: [
256
259
  ]
257
260
  },
258
261
  setConvergenceThreshold: {
259
262
  signature: "setConvergenceThreshold(threshold: number): Promise<void>;",
260
- docstring: "Set the convergence threshold (maximum change) for iterative calculation.\nConvenience mutator — patches `calculationSettings.maxChange`.",
263
+ docstring: "Set the convergence threshold (maximum change) for iterative calculation.\nConvenience mutator — patches `calculationSettings.maxChange`.\n@deprecated Use calculate({ iterative: { maxChange: threshold } }) instead.",
261
264
  usedTypes: [
262
265
  ]
263
266
  },
@@ -739,13 +742,6 @@ var interfaces = {
739
742
  "FormatEntry"
740
743
  ]
741
744
  },
742
- goalSeek: {
743
- signature: "goalSeek(targetCell: string, targetValue: number, changingCell: string): Promise<GoalSeekResult>;",
744
- docstring: "Run a goal seek to find the input value that produces a target result.",
745
- usedTypes: [
746
- "GoalSeekResult"
747
- ]
748
- },
749
745
  isVisible: {
750
746
  signature: "isVisible(): boolean;",
751
747
  docstring: "Check if the sheet is visible (sync -- local metadata).",
@@ -1299,6 +1295,25 @@ var interfaces = {
1299
1295
  }
1300
1296
  }
1301
1297
  },
1298
+ WorksheetWhatIf: {
1299
+ docstring: "Sub-API for What-If analysis operations.",
1300
+ functions: {
1301
+ goalSeek: {
1302
+ signature: "goalSeek(targetCell: string, targetValue: number, changingCell: string): Promise<GoalSeekResult>;",
1303
+ docstring: "Run a goal seek to find the input value that produces a target result.",
1304
+ usedTypes: [
1305
+ "GoalSeekResult"
1306
+ ]
1307
+ },
1308
+ dataTable: {
1309
+ signature: "dataTable(\n formulaCell: string,\n options: {\n rowInputCell?: string | null;\n colInputCell?: string | null;\n rowValues: (string | number | boolean | null)[];\n colValues: (string | number | boolean | null)[];\n },\n ): Promise<DataTableResult>;",
1310
+ docstring: "Evaluate a formula with different input values (What-If Data Table).\n\nOne-variable table: provide either `rowInputCell` or `colInputCell` (not both).\nTwo-variable table: provide both `rowInputCell` and `colInputCell`.\n\nFor one-variable tables, pass an empty array for the unused dimension's values.\n\nInput cells must already contain a value before calling this method.\n\n@param formulaCell - A1 address of the cell containing the formula to evaluate\n@param options - Input cells and substitution values\n@returns 2D grid of computed results",
1311
+ usedTypes: [
1312
+ "DataTableResult"
1313
+ ]
1314
+ }
1315
+ }
1316
+ },
1302
1317
  WorksheetSmartArt: {
1303
1318
  docstring: "",
1304
1319
  functions: {
@@ -1445,7 +1460,7 @@ var interfaces = {
1445
1460
  functions: {
1446
1461
  set: {
1447
1462
  signature: "set(address: string, format: CellFormat): Promise<FormatChangeResult>;",
1448
- docstring: "Set format for a single cell.\n\n@param address - A1-style cell address (e.g. \"A1\", \"B3\")\n@param format - Format properties to apply",
1463
+ docstring: "Set format for a single cell.\n\n@param address - A1-style cell address (e.g. \"A1\", \"B3\")\n@param format - Format properties to apply\n\n@example\n// Bold red currency\nawait ws.formats.set('A1', { bold: true, fontColor: '#ff0000', numberFormat: '$#,##0.00' });\n// Date format\nawait ws.formats.set('B1', { numberFormat: 'YYYY-MM-DD' });\n// Header style\nawait ws.formats.set('A1', { bold: true, fontSize: 14, backgroundColor: '#4472c4', fontColor: '#ffffff' });",
1449
1464
  usedTypes: [
1450
1465
  "CellFormat",
1451
1466
  "FormatChangeResult"
@@ -1453,7 +1468,7 @@ var interfaces = {
1453
1468
  },
1454
1469
  setRange: {
1455
1470
  signature: "setRange(range: string, format: CellFormat): Promise<FormatChangeResult>;",
1456
- docstring: "Set format for a contiguous range.\n\n@param range - A1-style range string (e.g. \"A1:B2\")\n@param format - Format properties to apply",
1471
+ docstring: "Set format for a contiguous range.\n\n@param range - A1-style range string (e.g. \"A1:B2\")\n@param format - Format properties to apply\n\n@example\n// Currency column\nawait ws.formats.setRange('B2:B100', { numberFormat: '$#,##0.00' });\n// Header row with borders\nawait ws.formats.setRange('A1:F1', {\n bold: true,\n backgroundColor: '#4472c4',\n fontColor: '#ffffff',\n borders: { bottom: { style: 'medium', color: '#2f5496' } }\n});",
1457
1472
  usedTypes: [
1458
1473
  "CellFormat",
1459
1474
  "FormatChangeResult"
@@ -2361,7 +2376,7 @@ var interfaces = {
2361
2376
  ]
2362
2377
  },
2363
2378
  setCriteria: {
2364
- signature: "setCriteria(\n filterId: string,\n col: number,\n criteria: ColumnFilterCriteria,\n ): Promise<void>;",
2379
+ signature: "setCriteria(filterId: string, col: number, criteria: ColumnFilterCriteria): Promise<void>;",
2365
2380
  docstring: "Set filter criteria for a column using filter ID.\n\n@param filterId - Filter ID\n@param col - Column index (0-based)\n@param criteria - Filter criteria to apply",
2366
2381
  usedTypes: [
2367
2382
  "ColumnFilterCriteria"
@@ -3816,8 +3831,8 @@ var types = {
3816
3831
  },
3817
3832
  AxisConfig: {
3818
3833
  name: "AxisConfig",
3819
- definition: "{\n xAxis?: {\n type: AxisType;\n title?: string;\n min?: number;\n max?: number;\n gridLines?: boolean;\n /** Show minor gridlines between major gridlines */\n minorGridLines?: boolean;\n majorUnit?: number;\n minorUnit?: number;\n tickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n /** Minor tick mark style (separate from major tickMarks) */\n minorTickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n numberFormat?: string;\n reverse?: boolean;\n visible?: boolean;\n position?: 'bottom' | 'top' | 'left' | 'right';\n logBase?: number;\n displayUnit?: string;\n };\n yAxis?: {\n type: AxisType;\n title?: string;\n min?: number;\n max?: number;\n gridLines?: boolean;\n /** Show minor gridlines between major gridlines */\n minorGridLines?: boolean;\n majorUnit?: number;\n minorUnit?: number;\n tickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n /** Minor tick mark style (separate from major tickMarks) */\n minorTickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n numberFormat?: string;\n reverse?: boolean;\n visible?: boolean;\n position?: 'bottom' | 'top' | 'left' | 'right';\n logBase?: number;\n displayUnit?: string;\n };\n secondaryYAxis?: {\n type: AxisType;\n title?: string;\n min?: number;\n max?: number;\n show: boolean;\n majorUnit?: number;\n minorUnit?: number;\n tickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n /** Minor tick mark style (separate from major tickMarks) */\n minorTickMarks?: 'inside' | 'outside' | 'cross' | 'none';\n numberFormat?: string;\n reverse?: boolean;\n visible?: boolean;\n position?: 'bottom' | 'top' | 'left' | 'right';\n logBase?: number;\n displayUnit?: string;\n };\n}",
3820
- docstring: "Axis configuration"
3834
+ definition: "{\n categoryAxis?: SingleAxisConfig;\n valueAxis?: SingleAxisConfig;\n secondaryCategoryAxis?: SingleAxisConfig;\n secondaryValueAxis?: SingleAxisConfig;\n /** @deprecated Use categoryAxis instead */\n xAxis?: SingleAxisConfig;\n /** @deprecated Use valueAxis instead */\n yAxis?: SingleAxisConfig;\n /** @deprecated Use secondaryValueAxis instead */\n secondaryYAxis?: SingleAxisConfig;\n}",
3835
+ docstring: "Axis configuration (matches AxisData wire type).\n\nWire field names: categoryAxis, valueAxis, secondaryCategoryAxis, secondaryValueAxis.\nLegacy aliases: xAxis, yAxis, secondaryYAxis (mapped in chart-bridge)."
3821
3836
  },
3822
3837
  AxisType: {
3823
3838
  name: "AxisType",
@@ -3971,7 +3986,7 @@ var types = {
3971
3986
  },
3972
3987
  CellFormat: {
3973
3988
  name: "CellFormat",
3974
- definition: "{\n numberFormat?: string;\n numberFormatType?: NumberFormatType;\n fontFamily?: string;\n fontSize?: number;\n /** Theme font reference for Excel-compatible \"+Headings\" / \"+Body\" fonts.\n\nWhen set, the cell uses the theme's majorFont (headings) or minorFont (body)\ninstead of fontFamily. Theme fonts are resolved at render time, allowing cells\nto automatically update when the workbook theme changes.\n\nBehavior:\n- 'major': Uses theme.fonts.majorFont (e.g., 'Calibri Light' in Office theme)\n- 'minor': Uses theme.fonts.minorFont (e.g., 'Calibri' in Office theme)\n- undefined: Uses fontFamily property (or default font if not set)\n\nWhen fontTheme is set, fontFamily is ignored for rendering but may still be\nstored for fallback purposes. This matches Excel's behavior where \"+Headings\"\ncells can have a fontFamily that's used when the theme is unavailable.\n\n@see resolveThemeFonts in theme.ts for resolution\n@see ThemeFonts for theme font pair definition */\n fontTheme?: 'major' | 'minor';\n /** Font color. Can be:\n- Absolute hex: '#4472c4' or '#ff0000'\n- Theme reference: 'theme:accent1' (uses current theme's accent1 color)\n- Theme with tint: 'theme:accent1:0.4' (40% lighter) or 'theme:accent1:-0.25' (25% darker)\n\nTheme references are resolved at render time via resolveThemeColors().\nThis enables cells to automatically update when the workbook theme changes.\n\n@see resolveThemeColors in theme.ts for resolution\n@see ThemeColorSlot for valid slot names (dark1, light1, accent1-6, etc.) */\n fontColor?: string;\n bold?: boolean;\n italic?: boolean;\n /** Underline type. Excel supports 4 underline styles:\n- 'none': No underline (default)\n- 'single': Standard underline under all characters\n- 'double': Two parallel lines under all characters\n- 'singleAccounting': Underline under text only (not spaces), for column alignment\n- 'doubleAccounting': Double underline under text only (not spaces), for column alignment */\n underlineType?: 'none' | 'single' | 'double' | 'singleAccounting' | 'doubleAccounting';\n strikethrough?: boolean;\n /** Superscript text (vertAlign = 'superscript' in Excel).\nText is rendered smaller and raised above the baseline. */\n superscript?: boolean;\n /** Subscript text (vertAlign = 'subscript' in Excel).\nText is rendered smaller and lowered below the baseline. */\n subscript?: boolean;\n /** Font outline effect.\nDraws only the outline of each character (hollow text).\nRare in modern spreadsheets but supported by Excel. */\n fontOutline?: boolean;\n /** Font shadow effect.\nAdds a shadow behind the text.\nRare in modern spreadsheets but supported by Excel. */\n fontShadow?: boolean;\n /** Horizontal text alignment.\n- 'general': Context-based (left for text, right for numbers) - Excel default\n- 'left': Left-align text\n- 'center': Center text\n- 'right': Right-align text\n- 'fill': Repeat content to fill cell width\n- 'justify': Justify text (distribute evenly)\n- 'centerContinuous': Center across selection without merging\n- 'distributed': Distribute text evenly with indent support */\n horizontalAlign?: | 'general'\n | 'left'\n | 'center'\n | 'right'\n | 'fill'\n | 'justify'\n | 'centerContinuous'\n | 'distributed';\n /** Vertical text alignment.\n- 'top': Align to top of cell\n- 'middle': Center vertically (also known as 'center')\n- 'bottom': Align to bottom of cell - Excel default\n- 'justify': Justify vertically (distribute lines evenly)\n- 'distributed': Distribute text evenly with vertical spacing */\n verticalAlign?: 'top' | 'middle' | 'bottom' | 'justify' | 'distributed';\n wrapText?: boolean;\n /** Text rotation angle in degrees.\n- 0-90: Counter-clockwise rotation\n- 91-180: Clockwise rotation (180 - value)\n- 255: Vertical text (stacked characters, read top-to-bottom) */\n textRotation?: number;\n /** Indent level (0-15).\nEach level adds approximately 8 pixels of indent from the cell edge.\nWorks with left and right horizontal alignment. */\n indent?: number;\n /** Shrink text to fit cell width.\nReduces font size to fit all text within the cell width.\nMutually exclusive with wrapText in Excel behavior. */\n shrinkToFit?: boolean;\n /** Text reading order for bidirectional text support.\n- 'context': Determined by first character with strong directionality\n- 'ltr': Left-to-right (forced)\n- 'rtl': Right-to-left (forced) */\n readingOrder?: 'context' | 'ltr' | 'rtl';\n /** Background color. Can be:\n- Absolute hex: '#ffffff' or '#c6efce'\n- Theme reference: 'theme:accent1' (uses current theme's accent1 color)\n- Theme with tint: 'theme:accent1:0.4' (40% lighter) or 'theme:accent1:-0.25' (25% darker)\n\nTheme references are resolved at render time via resolveThemeColors().\nThis enables cells to automatically update when the workbook theme changes.\n\nFor solid fills, this is the only color needed.\nFor pattern fills, this is the background color behind the pattern.\n\n@see resolveThemeColors in theme.ts for resolution\n@see ThemeColorSlot for valid slot names (dark1, light1, accent1-6, etc.) */\n backgroundColor?: string;\n /** Pattern fill type.\nExcel supports 18 pattern types for cell backgrounds.\nWhen set (and not 'none' or 'solid'), the cell uses a pattern fill. */\n patternType?: PatternType;\n /** Pattern foreground color.\nThe color of the pattern itself (dots, lines, etc.).\nOnly used when patternType is set to a non-solid pattern. */\n patternForegroundColor?: string;\n /** Gradient fill configuration.\nWhen set, overrides backgroundColor and pattern fill.\nExcel supports linear and path (radial) gradients. */\n gradientFill?: GradientFill;\n /** Cell borders (top, right, bottom, left, diagonal) */\n borders?: CellBorders;\n /** Cell is locked when sheet protection is enabled.\nDefault is true in Excel (all cells locked by default).\nOnly effective when the sheet's isProtected flag is true. */\n locked?: boolean;\n /** Formula is hidden when sheet protection is enabled.\nWhen true, the cell's formula is not shown in the formula bar.\nThe computed value is still displayed in the cell.\nOnly effective when the sheet's isProtected flag is true. */\n hidden?: boolean;\n /** Cell value is forced to text mode (apostrophe prefix).\nWhen true:\n- Raw value includes the leading apostrophe\n- Display value strips the apostrophe\n- Formula bar shows the apostrophe\n- Value is NOT coerced to date/number/etc.\n\nSet when user types ' as first character.\nFollows cell on sort/move (keyed by CellId, Cell Identity Model).\n\n@see plans/active/excel-parity/08-EDITING.md - Item 8.1 */\n forcedTextMode?: boolean;\n /** Arbitrary extension data for future features.\nUse namespaced keys: \"myfeature.mykey\"\nExample: { ignoreError: true } to suppress error indicators. */\n extensions?: Record<string, unknown>;\n}",
3989
+ definition: "{\n /** Excel-compatible number format code string.\n\nCommon format codes:\n- Currency: '$#,##0.00'\n- Accounting: '_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)'\n- Percentage: '0.00%'\n- Date: 'M/D/YYYY', 'YYYY-MM-DD', 'MMM D, YYYY'\n- Time: 'h:mm AM/PM', 'HH:mm:ss'\n- Number: '#,##0.00', '0.00'\n- Scientific: '0.00E+00'\n- Text: '@'\n- Fraction: '# ?/?'\n\nSee the `formatPresets` section in api-spec.json for the full catalog\nof 85+ pre-defined format codes with examples.\n\n@example\n// Currency\n{ numberFormat: '$#,##0.00' }\n// Percentage with 1 decimal\n{ numberFormat: '0.0%' }\n// ISO date\n{ numberFormat: 'YYYY-MM-DD' } */\n numberFormat?: string;\n /** Number format category hint. Auto-detected from numberFormat when not set.\nValid values: 'general' | 'number' | 'currency' | 'accounting' | 'date' |\n 'time' | 'percentage' | 'fraction' | 'scientific' | 'text' |\n 'special' | 'custom' */\n numberFormatType?: NumberFormatType;\n fontFamily?: string;\n fontSize?: number;\n /** Theme font reference for Excel-compatible \"+Headings\" / \"+Body\" fonts.\n\nWhen set, the cell uses the theme's majorFont (headings) or minorFont (body)\ninstead of fontFamily. Theme fonts are resolved at render time, allowing cells\nto automatically update when the workbook theme changes.\n\nBehavior:\n- 'major': Uses theme.fonts.majorFont (e.g., 'Calibri Light' in Office theme)\n- 'minor': Uses theme.fonts.minorFont (e.g., 'Calibri' in Office theme)\n- undefined: Uses fontFamily property (or default font if not set)\n\nWhen fontTheme is set, fontFamily is ignored for rendering but may still be\nstored for fallback purposes. This matches Excel's behavior where \"+Headings\"\ncells can have a fontFamily that's used when the theme is unavailable.\n\n@see resolveThemeFonts in theme.ts for resolution\n@see ThemeFonts for theme font pair definition */\n fontTheme?: 'major' | 'minor';\n /** Font color. Can be:\n- Absolute hex: '#4472c4' or '#ff0000'\n- Theme reference: 'theme:accent1' (uses current theme's accent1 color)\n- Theme with tint: 'theme:accent1:0.4' (40% lighter) or 'theme:accent1:-0.25' (25% darker)\n\nTheme references are resolved at render time via resolveThemeColors().\nThis enables cells to automatically update when the workbook theme changes.\n\n@see resolveThemeColors in theme.ts for resolution\n@see ThemeColorSlot for valid slot names (dark1, light1, accent1-6, etc.) */\n fontColor?: string;\n bold?: boolean;\n italic?: boolean;\n /** Underline type. Excel supports 4 underline styles:\n- 'none': No underline (default)\n- 'single': Standard underline under all characters\n- 'double': Two parallel lines under all characters\n- 'singleAccounting': Underline under text only (not spaces), for column alignment\n- 'doubleAccounting': Double underline under text only (not spaces), for column alignment */\n underlineType?: 'none' | 'single' | 'double' | 'singleAccounting' | 'doubleAccounting';\n strikethrough?: boolean;\n /** Superscript text (vertAlign = 'superscript' in Excel).\nText is rendered smaller and raised above the baseline. */\n superscript?: boolean;\n /** Subscript text (vertAlign = 'subscript' in Excel).\nText is rendered smaller and lowered below the baseline. */\n subscript?: boolean;\n /** Font outline effect.\nDraws only the outline of each character (hollow text).\nRare in modern spreadsheets but supported by Excel. */\n fontOutline?: boolean;\n /** Font shadow effect.\nAdds a shadow behind the text.\nRare in modern spreadsheets but supported by Excel. */\n fontShadow?: boolean;\n /** Horizontal text alignment.\n- 'general': Context-based (left for text, right for numbers) - Excel default\n- 'left': Left-align text\n- 'center': Center text\n- 'right': Right-align text\n- 'fill': Repeat content to fill cell width\n- 'justify': Justify text (distribute evenly)\n- 'centerContinuous': Center across selection without merging\n- 'distributed': Distribute text evenly with indent support */\n horizontalAlign?: | 'general'\n | 'left'\n | 'center'\n | 'right'\n | 'fill'\n | 'justify'\n | 'centerContinuous'\n | 'distributed';\n /** Vertical text alignment.\n- 'top': Align to top of cell\n- 'middle': Center vertically (also known as 'center')\n- 'bottom': Align to bottom of cell - Excel default\n- 'justify': Justify vertically (distribute lines evenly)\n- 'distributed': Distribute text evenly with vertical spacing */\n verticalAlign?: 'top' | 'middle' | 'bottom' | 'justify' | 'distributed';\n wrapText?: boolean;\n /** Text rotation angle in degrees.\n- 0-90: Counter-clockwise rotation\n- 91-180: Clockwise rotation (180 - value)\n- 255: Vertical text (stacked characters, read top-to-bottom) */\n textRotation?: number;\n /** Indent level (0-15).\nEach level adds approximately 8 pixels of indent from the cell edge.\nWorks with left and right horizontal alignment. */\n indent?: number;\n /** Shrink text to fit cell width.\nReduces font size to fit all text within the cell width.\nMutually exclusive with wrapText in Excel behavior. */\n shrinkToFit?: boolean;\n /** Text reading order for bidirectional text support.\n- 'context': Determined by first character with strong directionality\n- 'ltr': Left-to-right (forced)\n- 'rtl': Right-to-left (forced) */\n readingOrder?: 'context' | 'ltr' | 'rtl';\n /** Background color. Can be:\n- Absolute hex: '#ffffff' or '#c6efce'\n- Theme reference: 'theme:accent1' (uses current theme's accent1 color)\n- Theme with tint: 'theme:accent1:0.4' (40% lighter) or 'theme:accent1:-0.25' (25% darker)\n\nTheme references are resolved at render time via resolveThemeColors().\nThis enables cells to automatically update when the workbook theme changes.\n\nFor solid fills, this is the only color needed.\nFor pattern fills, this is the background color behind the pattern.\n\n@see resolveThemeColors in theme.ts for resolution\n@see ThemeColorSlot for valid slot names (dark1, light1, accent1-6, etc.) */\n backgroundColor?: string;\n /** Pattern fill type.\nExcel supports 18 pattern types for cell backgrounds.\nWhen set (and not 'none' or 'solid'), the cell uses a pattern fill. */\n patternType?: PatternType;\n /** Pattern foreground color.\nThe color of the pattern itself (dots, lines, etc.).\nOnly used when patternType is set to a non-solid pattern. */\n patternForegroundColor?: string;\n /** Gradient fill configuration.\nWhen set, overrides backgroundColor and pattern fill.\nExcel supports linear and path (radial) gradients. */\n gradientFill?: GradientFill;\n /** Cell borders (top, right, bottom, left, diagonal) */\n borders?: CellBorders;\n /** Cell is locked when sheet protection is enabled.\nDefault is true in Excel (all cells locked by default).\nOnly effective when the sheet's isProtected flag is true. */\n locked?: boolean;\n /** Formula is hidden when sheet protection is enabled.\nWhen true, the cell's formula is not shown in the formula bar.\nThe computed value is still displayed in the cell.\nOnly effective when the sheet's isProtected flag is true. */\n hidden?: boolean;\n /** Cell value is forced to text mode (apostrophe prefix).\nWhen true:\n- Raw value includes the leading apostrophe\n- Display value strips the apostrophe\n- Formula bar shows the apostrophe\n- Value is NOT coerced to date/number/etc.\n\nSet when user types ' as first character.\nFollows cell on sort/move (keyed by CellId, Cell Identity Model).\n\n@see plans/active/excel-parity/08-EDITING.md - Item 8.1 */\n forcedTextMode?: boolean;\n /** Arbitrary extension data for future features.\nUse namespaced keys: \"myfeature.mykey\"\nExample: { ignoreError: true } to suppress error indicators. */\n extensions?: Record<string, unknown>;\n}",
3975
3990
  docstring: "Cell formatting options\n\nThis interface defines ALL Excel format properties that can be applied to cells.\nThe implementation status of each property is tracked in format-registry.ts.\n\n@see FORMAT_PROPERTY_REGISTRY in format-registry.ts for implementation status"
3976
3991
  },
3977
3992
  CellRange: {
@@ -4026,12 +4041,12 @@ var types = {
4026
4041
  },
4027
4042
  ChartBorder: {
4028
4043
  name: "ChartBorder",
4029
- definition: "{\n color?: string;\n width?: number;\n style?: 'solid' | 'dashed' | 'dotted' | 'none';\n}",
4030
- docstring: "Shared chart border configuration"
4044
+ definition: "{\n color?: string;\n width?: number;\n style?: string;\n}",
4045
+ docstring: "Shared chart border configuration (matches ChartBorderData wire type)"
4031
4046
  },
4032
4047
  ChartConfig: {
4033
4048
  name: "ChartConfig",
4034
- definition: "{\n type: ChartType;\n /** Chart sub-type. For type-safe usage, prefer TypedChartConfig<T> which constrains subType to match type. */\n subType?: BarSubType | LineSubType | AreaSubType | StockSubType | RadarSubType;\n /** Anchor row (0-based) */\n anchorRow: number;\n /** Anchor column (0-based) */\n anchorCol: number;\n /** Chart width in cells */\n width: number;\n /** Chart height in cells */\n height: number;\n /** Data range in A1 notation (e.g., \"A1:D10\"). Optional when series[].values are provided. */\n dataRange?: string;\n /** Series labels range in A1 notation */\n seriesRange?: string;\n /** Category labels range in A1 notation */\n categoryRange?: string;\n seriesOrientation?: SeriesOrientation;\n title?: string;\n subtitle?: string;\n legend?: LegendConfig;\n axis?: AxisConfig;\n colors?: string[];\n series?: SeriesConfig[];\n dataLabels?: DataLabelConfig;\n pieSlice?: PieSliceConfig;\n trendline?: TrendlineConfig;\n /** Connect scatter points with lines (scatter-lines variant) */\n showLines?: boolean;\n /** Use smooth curves for scatter lines (scatter-smooth-lines variant) */\n smoothLines?: boolean;\n /** Fill area under radar lines */\n radarFilled?: boolean;\n /** Show markers on radar vertices */\n radarMarkers?: boolean;\n /** How blank cells are plotted: 'gap' (leave gap), 'zero' (treat as zero), 'span' (interpolate) */\n displayBlanksAs?: 'gap' | 'zero' | 'span';\n /** Whether to plot only visible cells (respecting row/column hiding) */\n plotVisibleOnly?: boolean;\n /** Gap width between bars/columns as percentage (0-500). Applied to bar/column chart types. */\n gapWidth?: number;\n /** Overlap between bars/columns (-100 to 100). Applied to clustered bar/column types. */\n overlap?: number;\n /** Hole size for doughnut charts as percentage (10-90) */\n doughnutHoleSize?: number;\n /** First slice angle for pie/doughnut charts in degrees (0-360) */\n firstSliceAngle?: number;\n /** Bubble scale for bubble charts as percentage (0-300) */\n bubbleScale?: number;\n /** Split type for of-pie charts (pie-of-pie, bar-of-pie) */\n splitType?: 'auto' | 'value' | 'percent' | 'position' | 'custom';\n /** Split value threshold for of-pie charts */\n splitValue?: number;\n waterfall?: WaterfallConfig;\n histogram?: HistogramConfig;\n boxplot?: BoxplotConfig;\n heatmap?: HeatmapConfig;\n violin?: ViolinConfig;\n name?: string;\n chartTitle?: TitleConfig;\n chartArea?: ChartAreaConfig;\n plotArea?: PlotAreaConfig;\n /** Z-order command for layering charts.\nAccepted as a convenience field by ws.charts.update() to adjust z-index:\n- 'front': bring to top of stack\n- 'back': send to bottom of stack\n- 'forward': move one layer up\n- 'backward': move one layer down */\n zOrder?: 'front' | 'back' | 'forward' | 'backward';\n /** Extensible extra data for enriched chart configurations.\nContains additional chart-specific settings (e.g., chartTitle font, chartArea fill)\nthat are stored on the chart but not part of the core config schema. */\n extra?: unknown;\n}",
4049
+ definition: "{\n type: ChartType;\n /** Chart sub-type. For type-safe usage, prefer TypedChartConfig<T> which constrains subType to match type. */\n subType?: BarSubType | LineSubType | AreaSubType | StockSubType | RadarSubType;\n /** Anchor row (0-based) */\n anchorRow: number;\n /** Anchor column (0-based) */\n anchorCol: number;\n /** Chart width in cells */\n width: number;\n /** Chart height in cells */\n height: number;\n /** Data range in A1 notation (e.g., \"A1:D10\"). Optional when series[].values are provided. */\n dataRange?: string;\n /** Series labels range in A1 notation */\n seriesRange?: string;\n /** Category labels range in A1 notation */\n categoryRange?: string;\n seriesOrientation?: SeriesOrientation;\n title?: string;\n subtitle?: string;\n legend?: LegendConfig;\n axis?: AxisConfig;\n colors?: string[];\n series?: SeriesConfig[];\n dataLabels?: DataLabelConfig;\n pieSlice?: PieSliceConfig;\n /** @deprecated Use trendlines[] instead — kept for backward compat */\n trendline?: TrendlineConfig;\n /** Wire-compatible trendline array */\n trendlines?: TrendlineConfig[];\n /** Connect scatter points with lines (scatter-lines variant) */\n showLines?: boolean;\n /** Use smooth curves for scatter lines (scatter-smooth-lines variant) */\n smoothLines?: boolean;\n /** Fill area under radar lines */\n radarFilled?: boolean;\n /** Show markers on radar vertices */\n radarMarkers?: boolean;\n /** How blank cells are plotted: 'gap' (leave gap), 'zero' (treat as zero), 'span' (interpolate) */\n displayBlanksAs?: 'gap' | 'zero' | 'span';\n /** Whether to plot only visible cells (respecting row/column hiding) */\n plotVisibleOnly?: boolean;\n /** Gap width between bars/columns as percentage (0-500). Applied to bar/column chart types. */\n gapWidth?: number;\n /** Overlap between bars/columns (-100 to 100). Applied to clustered bar/column types. */\n overlap?: number;\n /** Hole size for doughnut charts as percentage (10-90) */\n doughnutHoleSize?: number;\n /** First slice angle for pie/doughnut charts in degrees (0-360) */\n firstSliceAngle?: number;\n /** Bubble scale for bubble charts as percentage (0-300) */\n bubbleScale?: number;\n /** Split type for of-pie charts (pie-of-pie, bar-of-pie) */\n splitType?: 'auto' | 'value' | 'percent' | 'position' | 'custom';\n /** Split value threshold for of-pie charts */\n splitValue?: number;\n waterfall?: WaterfallConfig;\n histogram?: HistogramConfig;\n boxplot?: BoxplotConfig;\n heatmap?: HeatmapConfig;\n violin?: ViolinConfig;\n name?: string;\n chartTitle?: TitleConfig;\n chartArea?: ChartAreaConfig;\n plotArea?: PlotAreaConfig;\n /** Z-order command for layering charts.\nAccepted as a convenience field by ws.charts.update() to adjust z-index:\n- 'front': bring to top of stack\n- 'back': send to bottom of stack\n- 'forward': move one layer up\n- 'backward': move one layer down */\n zOrder?: 'front' | 'back' | 'forward' | 'backward';\n /** Extensible extra data for enriched chart configurations.\nContains additional chart-specific settings (e.g., chartTitle font, chartArea fill)\nthat are stored on the chart but not part of the core config schema. */\n extra?: unknown;\n}",
4035
4050
  docstring: "Public chart configuration -- the shape used by the unified API surface.\n\nThis contains all user-facing fields for creating/updating charts.\nInternal-only fields (CellId anchors, zIndex, table linking cache)\nare defined in StoredChartConfig in the charts package."
4036
4051
  },
4037
4052
  ChartFill: {
@@ -4094,11 +4109,6 @@ var types = {
4094
4109
  definition: "{\n /** Column index to write to (0-indexed) */\n columnIndex: number;\n /** JSONPath or field name to extract from data */\n dataPath: string;\n /** Optional transform formula (receives value as input) */\n transform?: string;\n /** Header text (if headerRow >= 0) */\n headerText?: string;\n}",
4095
4110
  docstring: "Column mapping for a sheet data binding."
4096
4111
  },
4097
- Comment: {
4098
- name: "Comment",
4099
- definition: "{\n id: string;\n cellId: string;\n cellAddress: string;\n text: string;\n author: string;\n threadId?: string;\n resolved?: boolean;\n createdAt?: number;\n parentId?: string;\n authorId?: string;\n modifiedAt?: number;\n content?: RichTextSegment[];\n}",
4100
- docstring: "A cell comment (thread-aware)."
4101
- },
4102
4112
  ConditionalFormat: {
4103
4113
  name: "ConditionalFormat",
4104
4114
  definition: "{\n /** Unique format identifier. */\n id: string;\n /** Cell ranges this format applies to. */\n ranges: CellRange[];\n /** Rules to evaluate (sorted by priority). */\n rules: CFRule[];\n}",
@@ -4156,8 +4166,8 @@ var types = {
4156
4166
  },
4157
4167
  DataLabelConfig: {
4158
4168
  name: "DataLabelConfig",
4159
- definition: "{\n show: boolean;\n position?: 'inside' | 'outside' | 'top' | 'bottom' | 'left' | 'right';\n format?: string;\n showCategoryName?: boolean;\n showSeriesName?: boolean;\n showPercentage?: boolean;\n showBubbleSize?: boolean;\n showLegendKey?: boolean;\n separator?: string;\n /** Show leader lines connecting data labels to their data points (pie/doughnut charts) */\n showLeaderLines?: boolean;\n}",
4160
- docstring: "Data label configuration"
4169
+ definition: "{\n show: boolean;\n position?: string;\n format?: string;\n showValue?: boolean;\n showCategoryName?: boolean;\n showSeriesName?: boolean;\n showPercentage?: boolean;\n showBubbleSize?: boolean;\n showLegendKey?: boolean;\n separator?: string;\n showLeaderLines?: boolean;\n text?: string;\n}",
4170
+ docstring: "Data label configuration (matches DataLabelData wire type)"
4161
4171
  },
4162
4172
  DatePeriod: {
4163
4173
  name: "DatePeriod",
@@ -4211,8 +4221,8 @@ var types = {
4211
4221
  },
4212
4222
  ErrorBarConfig: {
4213
4223
  name: "ErrorBarConfig",
4214
- definition: "{\n visible?: boolean;\n type?: 'fixedValue' | 'percentage' | 'standardDeviation' | 'standardError' | 'custom';\n include?: 'both' | 'plus' | 'minus';\n value?: number;\n}",
4215
- docstring: "Error bar configuration for series"
4224
+ definition: "{\n visible?: boolean;\n direction?: string;\n barType?: string;\n valueType?: string;\n value?: number;\n noEndCap?: boolean;\n}",
4225
+ docstring: "Error bar configuration for series (matches ErrorBarData wire type)"
4216
4226
  },
4217
4227
  ErrorVariant: {
4218
4228
  name: "ErrorVariant",
@@ -4251,7 +4261,7 @@ var types = {
4251
4261
  },
4252
4262
  FilterDetailInfo: {
4253
4263
  name: "FilterDetailInfo",
4254
- definition: "{\n /** Filter ID */\n id: string;\n /** Resolved numeric range of the filter */\n range: { startRow: number; startCol: number; endRow: number; endCol: number };\n /** Per-column filter criteria, keyed by header cell ID */\n columnFilters: Record<string, ColumnFilterCriteria>;\n}",
4264
+ definition: "{\n /** Filter ID */\n id: string;\n /** Resolved numeric range of the filter */\n range: { startRow: number; startCol: number; endRow: number; endCol: number };\n /** Per-column filter criteria, keyed by header cell ID */\n columnFilters: Record<string, ColumnFilter>;\n}",
4255
4265
  docstring: "Detailed filter information including resolved numeric range and column filters."
4256
4266
  },
4257
4267
  FilterInfo: {
@@ -4266,8 +4276,8 @@ var types = {
4266
4276
  },
4267
4277
  FilterState: {
4268
4278
  name: "FilterState",
4269
- definition: "{\n /** The range the auto-filter is applied to (A1 notation) */\n range: string;\n /** Per-column filter criteria, keyed by column index */\n columns: Map<number, ColumnFilterCriteria>;\n}",
4270
- docstring: "Current auto-filter state for a sheet."
4279
+ definition: "{\n /** The range the auto-filter is applied to (A1 notation) */\n range: string;\n /** Per-column filter criteria, keyed by column identifier (string) */\n columnFilters: Record<string, ColumnFilter>;\n}",
4280
+ docstring: "API filter state derived from Rust FilterState with A1-notation range."
4271
4281
  },
4272
4282
  FloatingObject: {
4273
4283
  name: "FloatingObject",
@@ -4356,13 +4366,8 @@ var types = {
4356
4366
  },
4357
4367
  LegendConfig: {
4358
4368
  name: "LegendConfig",
4359
- definition: "{\n show: boolean;\n position: LegendPosition;\n visible?: boolean;\n overlay?: boolean;\n font?: ChartFont;\n}",
4360
- docstring: "Legend configuration"
4361
- },
4362
- LegendPosition: {
4363
- name: "LegendPosition",
4364
- definition: "'top' | 'bottom' | 'left' | 'right' | 'none'",
4365
- docstring: "Legend position options"
4369
+ definition: "{\n show: boolean;\n position: string;\n visible: boolean;\n overlay?: boolean;\n font?: ChartFont;\n}",
4370
+ docstring: "Legend configuration (matches LegendData wire type)"
4366
4371
  },
4367
4372
  LineDash: {
4368
4373
  name: "LineDash",
@@ -4427,7 +4432,7 @@ var types = {
4427
4432
  Note: {
4428
4433
  name: "Note",
4429
4434
  definition: "{\n content: string;\n author: string;\n cellAddress: string;\n}",
4430
- docstring: "A cell note (simple, single string per cell)."
4435
+ docstring: "A cell note (simple, single string per cell). API-only type (no Rust equivalent)."
4431
4436
  },
4432
4437
  NumberFormatCategory: {
4433
4438
  name: "NumberFormatCategory",
@@ -4448,11 +4453,6 @@ var types = {
4448
4453
  },
4449
4454
  docstring: "Number format category classification.\nMatches the FormatType enum from Rust compute-formats."
4450
4455
  },
4451
- NumberFormatType: {
4452
- name: "NumberFormatType",
4453
- definition: "| 'general'\n | 'number'\n | 'currency'\n | 'accounting'\n | 'date'\n | 'time'\n | 'percentage'\n | 'fraction'\n | 'scientific'\n | 'text'\n | 'special'\n | 'custom'",
4454
- docstring: "Number format types"
4455
- },
4456
4456
  ObjectAnchorType: {
4457
4457
  name: "ObjectAnchorType",
4458
4458
  definition: "| 'twoCell' // Anchored to two cells (moves and resizes with cells)\n | 'oneCell' // Anchored to one cell (moves but doesn't resize)\n | 'absolute'",
@@ -4550,8 +4550,8 @@ var types = {
4550
4550
  },
4551
4551
  PieSliceConfig: {
4552
4552
  name: "PieSliceConfig",
4553
- definition: "{\n /** Index of slice to explode (pull out from center) */\n explodedIndex?: number;\n /** Array of indices to explode */\n explodedIndices?: number[];\n /** Distance to explode (0-1, default 0.1) */\n explodeOffset?: number;\n /** Allow clicking to select/explode slices */\n selectable?: boolean;\n}",
4554
- docstring: "Pie/doughnut slice configuration for exploded slices"
4553
+ definition: "{\n explosion?: number;\n explodedIndices?: number[];\n explodeOffset?: number;\n}",
4554
+ docstring: "Pie/doughnut slice configuration (matches PieSliceData wire type)"
4555
4555
  },
4556
4556
  PivotQueryRecord: {
4557
4557
  name: "PivotQueryRecord",
@@ -4590,8 +4590,8 @@ var types = {
4590
4590
  },
4591
4591
  PointFormat: {
4592
4592
  name: "PointFormat",
4593
- definition: "{\n fill?: string;\n border?: ChartBorder;\n dataLabel?: DataLabelConfig;\n}",
4594
- docstring: "Per-point formatting for individual data points in a series"
4593
+ definition: "{\n idx: number;\n fill?: string;\n border?: ChartBorder;\n dataLabel?: DataLabelConfig;\n}",
4594
+ docstring: "Per-point formatting for individual data points (matches PointFormatData wire type)"
4595
4595
  },
4596
4596
  PrintSettings: {
4597
4597
  name: "PrintSettings",
@@ -4640,11 +4640,6 @@ var types = {
4640
4640
  definition: "{\n [K in keyof CellFormat]-?: CellFormat[K] | null;\n}",
4641
4641
  docstring: "Dense cell format where every property is explicitly present (null when unset). Returned by formats.get()."
4642
4642
  },
4643
- RichTextSegment: {
4644
- name: "RichTextSegment",
4645
- definition: "{\n text: string;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n color?: string;\n fontName?: string;\n fontSize?: number;\n}",
4646
- docstring: "A single segment of rich text content."
4647
- },
4648
4643
  Scenario: {
4649
4644
  name: "Scenario",
4650
4645
  definition: "{\n /** Unique scenario ID */\n id: string;\n /** Creation timestamp (Unix ms) */\n createdAt: number;\n}",
@@ -4672,8 +4667,8 @@ var types = {
4672
4667
  },
4673
4668
  SeriesConfig: {
4674
4669
  name: "SeriesConfig",
4675
- definition: "{\n name?: string;\n type?: ChartType;\n color?: string;\n yAxisIndex?: 0 | 1;\n showMarkers?: boolean;\n markerSize?: number;\n markerStyle?: | 'circle'\n | 'dash'\n | 'diamond'\n | 'dot'\n | 'picture'\n | 'plus'\n | 'square'\n | 'star'\n | 'triangle'\n | 'x'\n | 'auto'\n | 'none';\n lineWidth?: number;\n smooth?: boolean;\n dataLabels?: DataLabelConfig;\n trendline?: TrendlineConfig;\n errorBars?: ErrorBarConfig;\n /** Separate X-axis error bars (for scatter/bubble charts) */\n xErrorBars?: ErrorBarConfig;\n /** Separate Y-axis error bars (for scatter/bubble charts) */\n yErrorBars?: ErrorBarConfig;\n /** Whether to invert the fill color for negative values */\n invertIfNegative?: boolean;\n /** Explosion distance for pie/doughnut per-series (0-400%) */\n explosion?: number;\n /** Data values range in A1 notation (e.g., \"B2:B10\") */\n values?: string;\n /** Category labels range in A1 notation (e.g., \"A2:A10\") */\n categories?: string;\n /** Per-point formatting overrides */\n points?: PointFormat[];\n}",
4676
- docstring: "Individual series configuration"
4670
+ definition: "{\n name?: string;\n type?: string;\n color?: string;\n values?: string;\n categories?: string;\n bubbleSize?: string;\n smooth?: boolean;\n explosion?: number;\n invertIfNegative?: boolean;\n yAxisIndex?: number;\n showMarkers?: boolean;\n markerSize?: number;\n markerStyle?: string;\n lineWidth?: number;\n points?: PointFormat[];\n dataLabels?: DataLabelConfig;\n trendlines?: TrendlineConfig[];\n errorBars?: ErrorBarConfig;\n xErrorBars?: ErrorBarConfig;\n yErrorBars?: ErrorBarConfig;\n idx?: number;\n order?: number;\n /** @deprecated Use trendlines[] instead */\n trendline?: TrendlineConfig;\n}",
4671
+ docstring: "Individual series configuration (matches ChartSeriesData wire type)"
4677
4672
  },
4678
4673
  SeriesOrientation: {
4679
4674
  name: "SeriesOrientation",
@@ -4750,6 +4745,11 @@ var types = {
4750
4745
  definition: "{\n /** Sheet ID */\n id: string;\n /** Sheet name */\n name: string;\n /** Sheet index (0-based) */\n index: number;\n /** Range containing all non-empty cells (A1 notation), or null if empty */\n usedRange: string | null;\n /** Number of cells with data */\n cellCount: number;\n /** Number of cells with formulas */\n formulaCount: number;\n /** Number of charts in this sheet */\n chartCount: number;\n /** Sheet dimensions */\n dimensions: { rows: number; cols: number };\n}",
4751
4746
  docstring: "A summary snapshot of a single sheet."
4752
4747
  },
4748
+ SingleAxisConfig: {
4749
+ name: "SingleAxisConfig",
4750
+ definition: "{\n title?: string;\n visible: boolean;\n min?: number;\n max?: number;\n axisType?: string;\n gridLines?: boolean;\n minorGridLines?: boolean;\n majorUnit?: number;\n minorUnit?: number;\n tickMarks?: string;\n minorTickMarks?: string;\n numberFormat?: string;\n reverse?: boolean;\n position?: string;\n logBase?: number;\n displayUnit?: string;\n /** @deprecated Alias for axisType — kept for backward compat with charts package */\n type?: AxisType;\n /** @deprecated Alias for visible — kept for backward compat with charts package */\n show?: boolean;\n}",
4751
+ docstring: "Single axis configuration (matches SingleAxisData wire type)."
4752
+ },
4753
4753
  Slicer: {
4754
4754
  name: "Slicer",
4755
4755
  definition: "{\n /** Currently selected filter items */\n selectedItems: CellValue[];\n /** Position and dimensions in pixels */\n position: { x: number; y: number; width: number; height: number };\n}",
@@ -4757,7 +4757,7 @@ var types = {
4757
4757
  },
4758
4758
  SlicerConfig: {
4759
4759
  name: "SlicerConfig",
4760
- definition: "{\n /** Name of the table to connect the slicer to */\n tableName?: string;\n /** Column name within the table to filter on */\n columnName?: string;\n /** Display name for the slicer (auto-generated if omitted) */\n name?: string;\n /** Position and dimensions in pixels */\n position?: { x: number; y: number; width: number; height: number };\n /** Data source connection (rich alternative to tableName/columnName) */\n source?: SlicerSource;\n /** Slicer caption (header text) */\n caption?: string;\n /** Style configuration (partial for incremental updates) */\n style?: Partial<SlicerStyle>;\n /** Show slicer header */\n showHeader?: boolean;\n /** Currently selected date range start (timeline slicers) */\n selectedStartDate?: number;\n /** Currently selected date range end (timeline slicers) */\n selectedEndDate?: number;\n /** Current aggregation level (timeline slicers) */\n timelineLevel?: TimelineLevel;\n}",
4760
+ definition: "{\n /** Slicer ID (generated if omitted) */\n id?: string;\n /** Sheet ID the slicer belongs to */\n sheetId?: string;\n /** Name of the table to connect the slicer to */\n tableName?: string;\n /** Column name within the table to filter on */\n columnName?: string;\n /** Display name for the slicer (auto-generated if omitted) */\n name?: string;\n /** Position and dimensions in pixels */\n position?: { x: number; y: number; width: number; height: number };\n /** Data source connection (rich alternative to tableName/columnName) */\n source?: SlicerSource;\n /** Slicer caption (header text) */\n caption?: string;\n /** Style configuration */\n style?: SlicerStyle;\n /** Show slicer header */\n showHeader?: boolean;\n /** Z-order within the sheet */\n zIndex?: number;\n /** Whether slicer position is locked */\n locked?: boolean;\n /** Whether multi-select is enabled */\n multiSelect?: boolean;\n /** Initial selected values */\n selectedValues?: CellValue[];\n /** Currently selected date range start (timeline slicers) */\n selectedStartDate?: number;\n /** Currently selected date range end (timeline slicers) */\n selectedEndDate?: number;\n /** Current aggregation level (timeline slicers) */\n timelineLevel?: TimelineLevel;\n}",
4761
4761
  docstring: "Configuration for creating a new slicer."
4762
4762
  },
4763
4763
  SlicerCustomStyle: {
@@ -4867,13 +4867,13 @@ var types = {
4867
4867
  },
4868
4868
  TableColumn: {
4869
4869
  name: "TableColumn",
4870
- definition: "{\n /** Column header name */\n name: string;\n /** Column index within the table (0-based) */\n index: number;\n /** Total row function type */\n totalFunction?: TotalFunction;\n /** Calculated column formula */\n calculatedFormula?: string;\n}",
4871
- docstring: "A single column in a table."
4870
+ definition: "{\n /** Unique column ID */\n id: string;\n /** Column header name */\n name: string;\n /** Column index within the table (0-based) */\n index: number;\n /** Total row function type */\n totalsFunction: TotalsFunction | null;\n /** Total row label */\n totalsLabel: string | null;\n /** Calculated column formula */\n calculatedFormula?: string;\n}",
4871
+ docstring: "A single column in a table.\n\nField names match the Rust-generated `TableColumn` type (compute-types.gen.ts)."
4872
4872
  },
4873
4873
  TableInfo: {
4874
4874
  name: "TableInfo",
4875
- definition: "{\n /** Internal table identifier (opaque string) */\n id?: string;\n /** Table name */\n name: string;\n /** Table range in A1 notation */\n range: string;\n /** Whether the table has a header row */\n hasHeaders: boolean;\n /** Table style preset name */\n style?: TableStylePreset;\n /** Column definitions */\n columns: TableColumn[];\n /** Whether the total row is visible */\n showTotals?: boolean;\n /** Whether first column is highlighted */\n highlightFirstColumn?: boolean;\n /** Whether last column is highlighted */\n highlightLastColumn?: boolean;\n /** Whether banded columns are shown */\n showBandedColumns?: boolean;\n /** Whether banded rows are shown */\n showBandedRows?: boolean;\n /** Whether filter buttons are shown */\n showFilterButton?: boolean;\n /** Whether the header row is shown (mirrors hasHeaders) */\n showHeaders?: boolean;\n}",
4876
- docstring: "Information about an existing table."
4875
+ definition: "{\n /** Internal table identifier */\n id: string;\n /** Table name */\n name: string;\n /** Display name */\n displayName: string;\n /** Sheet the table belongs to */\n sheetId: string;\n /** Table range in A1 notation (converted from Rust SheetRange) */\n range: string;\n /** Column definitions */\n columns: TableColumn[];\n /** Whether the table has a header row */\n hasHeaderRow: boolean;\n /** Whether the totals row is visible */\n hasTotalsRow: boolean;\n /** Table style name */\n style: string;\n /** Whether banded rows are shown */\n bandedRows: boolean;\n /** Whether banded columns are shown */\n bandedColumns: boolean;\n /** Whether first column is emphasized */\n emphasizeFirstColumn: boolean;\n /** Whether last column is emphasized */\n emphasizeLastColumn: boolean;\n /** Whether filter buttons are shown */\n showFilterButtons: boolean;\n}",
4876
+ docstring: "Information about an existing table.\n\nField names match the Rust-generated `Table` type (compute-types.gen.ts)\nexcept `range` which is converted from `SheetRange` to A1 notation string."
4877
4877
  },
4878
4878
  TableOptions: {
4879
4879
  name: "TableOptions",
@@ -4885,16 +4885,6 @@ var types = {
4885
4885
  definition: "{\n /** Style name */\n name: string;\n}",
4886
4886
  docstring: "Configuration for creating/updating a custom table style."
4887
4887
  },
4888
- TableStyleInfo: {
4889
- name: "TableStyleInfo",
4890
- definition: "{\n /** Style name/ID */\n name: string;\n /** Display name */\n displayName?: string;\n /** Whether this is a built-in style */\n isBuiltIn?: boolean;\n}",
4891
- docstring: "Information about a custom table style."
4892
- },
4893
- TableStylePreset: {
4894
- name: "TableStylePreset",
4895
- definition: "| 'none'\n // Light styles\n | 'light1'\n | 'light2'\n | 'light3'\n | 'light4'\n | 'light5'\n | 'light6'\n | 'light7'\n | 'light8'\n | 'light9'\n | 'light10'\n | 'light11'\n | 'light12'\n | 'light13'\n | 'light14'\n | 'light15'\n | 'light16'\n | 'light17'\n | 'light18'\n | 'light19'\n | 'light20'\n | 'light21'\n // Medium styles\n | 'medium1'\n | 'medium2'\n | 'medium3'\n | 'medium4'\n | 'medium5'\n | 'medium6'\n | 'medium7'\n | 'medium8'\n | 'medium9'\n | 'medium10'\n | 'medium11'\n | 'medium12'\n | 'medium13'\n | 'medium14'\n | 'medium15'\n | 'medium16'\n | 'medium17'\n | 'medium18'\n | 'medium19'\n | 'medium20'\n | 'medium21'\n | 'medium22'\n | 'medium23'\n | 'medium24'\n | 'medium25'\n | 'medium26'\n | 'medium27'\n | 'medium28'\n // Dark styles\n | 'dark1'\n | 'dark2'\n | 'dark3'\n | 'dark4'\n | 'dark5'\n | 'dark6'\n | 'dark7'\n | 'dark8'\n | 'dark9'\n | 'dark10'\n | 'dark11'",
4896
- docstring: "Table style presets matching Excel's table style gallery.\nLight styles (1-21), Medium styles (1-28), Dark styles (1-11)."
4897
- },
4898
4888
  TextBoxBorder: {
4899
4889
  name: "TextBoxBorder",
4900
4890
  definition: "{\n /** Corner radius in pixels (for rounded corners) */\n radius?: number;\n}",
@@ -4945,20 +4935,15 @@ var types = {
4945
4935
  definition: "{\n text?: string;\n visible?: boolean;\n position?: 'top' | 'bottom' | 'left' | 'right' | 'overlay';\n font?: ChartFont;\n}",
4946
4936
  docstring: "Rich title configuration"
4947
4937
  },
4948
- TotalFunction: {
4949
- name: "TotalFunction",
4950
- definition: "| 'none'\n | 'sum'\n | 'count'\n | 'average'\n | 'min'\n | 'max'\n | 'stdDev'\n | 'var'\n | 'countNums'\n | 'custom'",
4951
- docstring: "Total row function types.\nMaps to Excel's total row dropdown options."
4938
+ TotalsFunction: {
4939
+ name: "TotalsFunction",
4940
+ definition: "| 'average'\n | 'count'\n | 'countNums'\n | 'max'\n | 'min'\n | 'stdDev'\n | 'sum'\n | 'var'\n | 'custom'\n | 'none'",
4941
+ docstring: "Totals function type (matches Rust TotalsFunction)."
4952
4942
  },
4953
4943
  TrendlineConfig: {
4954
4944
  name: "TrendlineConfig",
4955
- definition: "{\n show: boolean;\n type: TrendlineType;\n color?: string;\n lineWidth?: number;\n showEquation?: boolean;\n showR2?: boolean;\n order?: number;\n period?: number;\n intercept?: number;\n forwardPeriod?: number;\n backwardPeriod?: number;\n name?: string;\n}",
4956
- docstring: "Trendline configuration"
4957
- },
4958
- TrendlineType: {
4959
- name: "TrendlineType",
4960
- definition: "| 'linear'\n | 'exponential'\n | 'logarithmic'\n | 'polynomial'\n | 'power'\n | 'moving-average'",
4961
- docstring: "Trendline types for scatter charts"
4945
+ definition: "{\n show?: boolean;\n type?: string;\n color?: string;\n lineWidth?: number;\n order?: number;\n period?: number;\n forward?: number;\n backward?: number;\n intercept?: number;\n displayEquation?: boolean;\n displayRSquared?: boolean;\n name?: string;\n /** @deprecated Use displayEquation instead */\n showEquation?: boolean;\n /** @deprecated Use displayRSquared instead */\n showR2?: boolean;\n /** @deprecated Use forward instead */\n forwardPeriod?: number;\n /** @deprecated Use backward instead */\n backwardPeriod?: number;\n}",
4946
+ docstring: "Trendline configuration (matches TrendlineData wire type)"
4962
4947
  },
4963
4948
  UndoHistoryEntry: {
4964
4949
  name: "UndoHistoryEntry",
@@ -5036,10 +5021,422 @@ var types = {
5036
5021
  docstring: "A summary snapshot of the entire workbook state."
5037
5022
  }
5038
5023
  };
5024
+ var formatPresets = {
5025
+ general: {
5026
+ "default": {
5027
+ code: "General",
5028
+ description: "",
5029
+ example: "1234.5"
5030
+ }
5031
+ },
5032
+ number: {
5033
+ integer: {
5034
+ code: "0",
5035
+ description: "No decimal places",
5036
+ example: "1235"
5037
+ },
5038
+ decimal1: {
5039
+ code: "0.0",
5040
+ description: "1 decimal place",
5041
+ example: "1234.5"
5042
+ },
5043
+ decimal2: {
5044
+ code: "0.00",
5045
+ description: "2 decimal places",
5046
+ example: "1234.50"
5047
+ },
5048
+ decimal3: {
5049
+ code: "0.000",
5050
+ description: "3 decimal places",
5051
+ example: "1234.500"
5052
+ },
5053
+ thousands: {
5054
+ code: "#,##0",
5055
+ description: "Thousands separator, no decimals",
5056
+ example: "1,235"
5057
+ },
5058
+ thousandsDecimal1: {
5059
+ code: "#,##0.0",
5060
+ description: "Thousands separator, 1 decimal",
5061
+ example: "1,234.5"
5062
+ },
5063
+ thousandsDecimal2: {
5064
+ code: "#,##0.00",
5065
+ description: "Thousands separator, 2 decimals",
5066
+ example: "1,234.50"
5067
+ },
5068
+ negativeRed: {
5069
+ code: "#,##0.00;[Red]-#,##0.00",
5070
+ description: "Red negative numbers",
5071
+ example: "-1,234.50"
5072
+ },
5073
+ negativeParens: {
5074
+ code: "#,##0.00;(#,##0.00)",
5075
+ description: "Parentheses for negatives",
5076
+ example: "(1,234.50)"
5077
+ },
5078
+ negativeParensRed: {
5079
+ code: "#,##0.00;[Red](#,##0.00)",
5080
+ description: "Red parentheses for negatives",
5081
+ example: "(1,234.50)"
5082
+ }
5083
+ },
5084
+ currency: {
5085
+ usd: {
5086
+ code: "$#,##0.00",
5087
+ description: "US Dollar",
5088
+ example: "$1,234.50"
5089
+ },
5090
+ usdNegMinus: {
5091
+ code: "$#,##0.00;-$#,##0.00",
5092
+ description: "USD minus",
5093
+ example: "-$1,234.50"
5094
+ },
5095
+ usdNegParens: {
5096
+ code: "$#,##0.00;($#,##0.00)",
5097
+ description: "USD parentheses",
5098
+ example: "($1,234.50)"
5099
+ },
5100
+ usdNegRed: {
5101
+ code: "$#,##0.00;[Red]-$#,##0.00",
5102
+ description: "USD red minus",
5103
+ example: "-$1,234.50"
5104
+ },
5105
+ usdNegParensRed: {
5106
+ code: "$#,##0.00;[Red]($#,##0.00)",
5107
+ description: "USD red parentheses",
5108
+ example: "($1,234.50)"
5109
+ },
5110
+ eur: {
5111
+ code: "€#,##0.00",
5112
+ description: "Euro",
5113
+ example: "€1,234.50"
5114
+ },
5115
+ gbp: {
5116
+ code: "£#,##0.00",
5117
+ description: "British Pound",
5118
+ example: "£1,234.50"
5119
+ },
5120
+ jpy: {
5121
+ code: "¥#,##0",
5122
+ description: "Japanese Yen (no decimals)",
5123
+ example: "¥1,235"
5124
+ },
5125
+ cny: {
5126
+ code: "¥#,##0.00",
5127
+ description: "Chinese Yuan",
5128
+ example: "¥1,234.50"
5129
+ },
5130
+ inr: {
5131
+ code: "₹#,##0.00",
5132
+ description: "Indian Rupee",
5133
+ example: "₹1,234.50"
5134
+ },
5135
+ krw: {
5136
+ code: "₩#,##0",
5137
+ description: "Korean Won (no decimals)",
5138
+ example: "₩1,235"
5139
+ },
5140
+ chf: {
5141
+ code: "CHF #,##0.00",
5142
+ description: "Swiss Franc",
5143
+ example: "CHF 1,234.50"
5144
+ },
5145
+ cad: {
5146
+ code: "CA$#,##0.00",
5147
+ description: "Canadian Dollar",
5148
+ example: "CA$1,234.50"
5149
+ },
5150
+ aud: {
5151
+ code: "A$#,##0.00",
5152
+ description: "Australian Dollar",
5153
+ example: "A$1,234.50"
5154
+ }
5155
+ },
5156
+ accounting: {
5157
+ usd: {
5158
+ code: "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)",
5159
+ description: "USD Accounting",
5160
+ example: "$ 1,234.50"
5161
+ },
5162
+ eur: {
5163
+ code: "_(€* #,##0.00_);_(€* (#,##0.00);_(€* \"-\"??_);_(@_)",
5164
+ description: "EUR Accounting",
5165
+ example: "€ 1,234.50"
5166
+ },
5167
+ gbp: {
5168
+ code: "_(£* #,##0.00_);_(£* (#,##0.00);_(£* \"-\"??_);_(@_)",
5169
+ description: "GBP Accounting",
5170
+ example: "£ 1,234.50"
5171
+ }
5172
+ },
5173
+ date: {
5174
+ shortUS: {
5175
+ code: "m/d/yyyy",
5176
+ description: "Short date (US)",
5177
+ example: "12/13/2025"
5178
+ },
5179
+ mediumUS: {
5180
+ code: "mmm d, yyyy",
5181
+ description: "Medium date (US)",
5182
+ example: "Dec 13, 2025"
5183
+ },
5184
+ longUS: {
5185
+ code: "mmmm d, yyyy",
5186
+ description: "Long date (US)",
5187
+ example: "December 13, 2025"
5188
+ },
5189
+ fullUS: {
5190
+ code: "dddd, mmmm d, yyyy",
5191
+ description: "Full date (US)",
5192
+ example: "Saturday, December 13, 2025"
5193
+ },
5194
+ iso: {
5195
+ code: "yyyy-mm-dd",
5196
+ description: "ISO 8601",
5197
+ example: "2025-12-13"
5198
+ },
5199
+ shortEU: {
5200
+ code: "d/m/yyyy",
5201
+ description: "Short date (EU)",
5202
+ example: "13/12/2025"
5203
+ },
5204
+ mediumEU: {
5205
+ code: "d mmm yyyy",
5206
+ description: "Medium date (EU)",
5207
+ example: "13 Dec 2025"
5208
+ },
5209
+ longEU: {
5210
+ code: "d mmmm yyyy",
5211
+ description: "Long date (EU)",
5212
+ example: "13 December 2025"
5213
+ },
5214
+ monthYear: {
5215
+ code: "mmmm yyyy",
5216
+ description: "Month and year",
5217
+ example: "December 2025"
5218
+ },
5219
+ monthYearShort: {
5220
+ code: "mmm yyyy",
5221
+ description: "Short month and year",
5222
+ example: "Dec 2025"
5223
+ },
5224
+ dayMonth: {
5225
+ code: "d mmmm",
5226
+ description: "Day and month",
5227
+ example: "13 December"
5228
+ },
5229
+ dayMonthShort: {
5230
+ code: "d mmm",
5231
+ description: "Short day and month",
5232
+ example: "13 Dec"
5233
+ },
5234
+ excelShort: {
5235
+ code: "m/d/yy",
5236
+ description: "Excel short date",
5237
+ example: "12/13/25"
5238
+ },
5239
+ excelMedium: {
5240
+ code: "d-mmm-yy",
5241
+ description: "Excel medium date",
5242
+ example: "13-Dec-25"
5243
+ },
5244
+ excelLong: {
5245
+ code: "d-mmm-yyyy",
5246
+ description: "Excel long date",
5247
+ example: "13-Dec-2025"
5248
+ }
5249
+ },
5250
+ time: {
5251
+ short12: {
5252
+ code: "h:mm AM/PM",
5253
+ description: "12-hour short",
5254
+ example: "3:45 PM"
5255
+ },
5256
+ long12: {
5257
+ code: "h:mm:ss AM/PM",
5258
+ description: "12-hour with seconds",
5259
+ example: "3:45:30 PM"
5260
+ },
5261
+ short24: {
5262
+ code: "HH:mm",
5263
+ description: "24-hour short",
5264
+ example: "15:45"
5265
+ },
5266
+ long24: {
5267
+ code: "HH:mm:ss",
5268
+ description: "24-hour with seconds",
5269
+ example: "15:45:30"
5270
+ },
5271
+ dateTime12: {
5272
+ code: "m/d/yyyy h:mm AM/PM",
5273
+ description: "Date and 12-hour time",
5274
+ example: "12/13/2025 3:45 PM"
5275
+ },
5276
+ dateTime24: {
5277
+ code: "yyyy-mm-dd HH:mm",
5278
+ description: "ISO date and 24-hour time",
5279
+ example: "2025-12-13 15:45"
5280
+ },
5281
+ durationHM: {
5282
+ code: "[h]:mm",
5283
+ description: "Hours and minutes (elapsed)",
5284
+ example: "25:30"
5285
+ },
5286
+ durationHMS: {
5287
+ code: "[h]:mm:ss",
5288
+ description: "Hours, minutes, seconds (elapsed)",
5289
+ example: "25:30:45"
5290
+ },
5291
+ durationMS: {
5292
+ code: "[mm]:ss",
5293
+ description: "Minutes and seconds (elapsed)",
5294
+ example: "1530:45"
5295
+ }
5296
+ },
5297
+ percentage: {
5298
+ integer: {
5299
+ code: "0%",
5300
+ description: "No decimal places",
5301
+ example: "50%"
5302
+ },
5303
+ decimal1: {
5304
+ code: "0.0%",
5305
+ description: "1 decimal place",
5306
+ example: "50.0%"
5307
+ },
5308
+ decimal2: {
5309
+ code: "0.00%",
5310
+ description: "2 decimal places",
5311
+ example: "50.00%"
5312
+ },
5313
+ decimal3: {
5314
+ code: "0.000%",
5315
+ description: "3 decimal places",
5316
+ example: "50.000%"
5317
+ }
5318
+ },
5319
+ fraction: {
5320
+ halves: {
5321
+ code: "# ?/2",
5322
+ description: "Halves (1/2)",
5323
+ example: "1 1/2"
5324
+ },
5325
+ quarters: {
5326
+ code: "# ?/4",
5327
+ description: "Quarters (1/4)",
5328
+ example: "1 1/4"
5329
+ },
5330
+ eighths: {
5331
+ code: "# ?/8",
5332
+ description: "Eighths (1/8)",
5333
+ example: "1 3/8"
5334
+ },
5335
+ sixteenths: {
5336
+ code: "# ??/16",
5337
+ description: "Sixteenths (1/16)",
5338
+ example: "1 5/16"
5339
+ },
5340
+ tenths: {
5341
+ code: "# ?/10",
5342
+ description: "Tenths (1/10)",
5343
+ example: "1 3/10"
5344
+ },
5345
+ hundredths: {
5346
+ code: "# ??/100",
5347
+ description: "Hundredths (1/100)",
5348
+ example: "1 25/100"
5349
+ },
5350
+ upToOneDigit: {
5351
+ code: "# ?/?",
5352
+ description: "Up to one digit (1/4)",
5353
+ example: "1 2/3"
5354
+ },
5355
+ upToTwoDigits: {
5356
+ code: "# ??/??",
5357
+ description: "Up to two digits (21/25)",
5358
+ example: "1 25/67"
5359
+ },
5360
+ upToThreeDigits: {
5361
+ code: "# ???/???",
5362
+ description: "Up to three digits (312/943)",
5363
+ example: "1 312/943"
5364
+ }
5365
+ },
5366
+ scientific: {
5367
+ "default": {
5368
+ code: "0.00E+00",
5369
+ description: "2 decimal places",
5370
+ example: "1.23E+03"
5371
+ },
5372
+ decimal1: {
5373
+ code: "0.0E+00",
5374
+ description: "1 decimal place",
5375
+ example: "1.2E+03"
5376
+ },
5377
+ decimal3: {
5378
+ code: "0.000E+00",
5379
+ description: "3 decimal places",
5380
+ example: "1.235E+03"
5381
+ },
5382
+ noDecimals: {
5383
+ code: "0E+00",
5384
+ description: "No decimal places",
5385
+ example: "1E+03"
5386
+ }
5387
+ },
5388
+ text: {
5389
+ "default": {
5390
+ code: "@",
5391
+ description: "Display as entered",
5392
+ example: "1234"
5393
+ }
5394
+ },
5395
+ special: {
5396
+ zipCode: {
5397
+ code: "00000",
5398
+ description: "ZIP Code (5-digit)",
5399
+ example: "01234"
5400
+ },
5401
+ zipPlus4: {
5402
+ code: "00000-0000",
5403
+ description: "ZIP+4 Code",
5404
+ example: "01234-5678"
5405
+ },
5406
+ phone: {
5407
+ code: "(###) ###-####",
5408
+ description: "Phone Number",
5409
+ example: "(555) 123-4567"
5410
+ },
5411
+ ssn: {
5412
+ code: "000-00-0000",
5413
+ description: "Social Security Number",
5414
+ example: "123-45-6789"
5415
+ }
5416
+ },
5417
+ custom: {
5418
+ }
5419
+ };
5420
+ var defaultFormats = {
5421
+ accounting: "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)",
5422
+ currency: "$#,##0.00",
5423
+ custom: "General",
5424
+ date: "m/d/yyyy",
5425
+ fraction: "# ?/?",
5426
+ general: "General",
5427
+ number: "#,##0.00",
5428
+ percentage: "0.00%",
5429
+ scientific: "0.00E+00",
5430
+ special: "00000",
5431
+ text: "@",
5432
+ time: "h:mm AM/PM"
5433
+ };
5039
5434
  var apiSpec = {
5040
5435
  subApis: subApis,
5041
5436
  interfaces: interfaces,
5042
- types: types
5437
+ types: types,
5438
+ formatPresets: formatPresets,
5439
+ defaultFormats: defaultFormats
5043
5440
  };
5044
5441
 
5045
5442
  /**