@odoo/o-spreadsheet 16.3.31 → 16.3.34

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.
@@ -1127,7 +1127,7 @@ function deepEquals(o1, o2) {
1127
1127
  if (typeof o1 !== typeof o2)
1128
1128
  return false;
1129
1129
  if (typeof o1 !== "object")
1130
- return o1 === o2;
1130
+ return false;
1131
1131
  // Objects can have different keys if the values are undefined
1132
1132
  const keys = new Set();
1133
1133
  Object.keys(o1).forEach((key) => keys.add(key));
@@ -6286,6 +6286,7 @@ class LinkEditor extends owl.Component {
6286
6286
  this.save();
6287
6287
  }
6288
6288
  ev.stopPropagation();
6289
+ ev.preventDefault();
6289
6290
  break;
6290
6291
  case "Escape":
6291
6292
  this.cancel();
@@ -6870,7 +6871,7 @@ function truncateLabel(label) {
6870
6871
  /**
6871
6872
  * Get a default chart js configuration
6872
6873
  */
6873
- function getDefaultChartJsRuntime(chart, labels, fontColor, dataSetsFormat) {
6874
+ function getDefaultChartJsRuntime(chart, labels, fontColor, dataSetsFormat, truncateLabels = true) {
6874
6875
  return {
6875
6876
  type: chart.type,
6876
6877
  options: {
@@ -6923,7 +6924,7 @@ function getDefaultChartJsRuntime(chart, labels, fontColor, dataSetsFormat) {
6923
6924
  },
6924
6925
  },
6925
6926
  data: {
6926
- labels: labels.map(truncateLabel),
6927
+ labels: truncateLabels ? labels.map(truncateLabel) : labels,
6927
6928
  datasets: [],
6928
6929
  },
6929
6930
  };
@@ -7762,9 +7763,9 @@ function canBeLinearChart(labelRange, getters) {
7762
7763
  }
7763
7764
  return true;
7764
7765
  }
7765
- function getLineConfiguration(chart, labels, dataSetFormat) {
7766
+ function getLineConfiguration(chart, labels, dataSetFormat, truncateLabels) {
7766
7767
  const fontColor = chartFontColor(chart.background);
7767
- const config = getDefaultChartJsRuntime(chart, labels, fontColor, dataSetFormat);
7768
+ const config = getDefaultChartJsRuntime(chart, labels, fontColor, dataSetFormat, truncateLabels);
7768
7769
  const legend = {
7769
7770
  labels: {
7770
7771
  fontColor,
@@ -7839,8 +7840,9 @@ function createLineChartRuntime(chart, getters) {
7839
7840
  if (chart.aggregated) {
7840
7841
  ({ labels, dataSetsValues } = aggregateDataForLabels(labels, dataSetsValues));
7841
7842
  }
7843
+ const truncateLabels = axisType === "category";
7842
7844
  const dataSetFormat = getChartDatasetFormat(getters, chart.dataSets);
7843
- const config = getLineConfiguration(chart, labels, dataSetFormat);
7845
+ const config = getLineConfiguration(chart, labels, dataSetFormat, truncateLabels);
7844
7846
  const labelFormat = getChartLabelFormat(getters, chart.labelRange);
7845
7847
  if (axisType === "time") {
7846
7848
  config.options.scales.xAxes[0].type = "time";
@@ -9474,9 +9476,12 @@ const INSERT_LINK_NAME = (env) => {
9474
9476
  // Filters action
9475
9477
  //------------------------------------------------------------------------------
9476
9478
  const FILTERS_CREATE_FILTER_TABLE = (env) => {
9479
+ const zones = env.model.getters.getSelectedZones();
9480
+ if (zones.length === 1 && getZoneArea(zones[0]) === 1) {
9481
+ env.model.selection.selectTableAroundSelection();
9482
+ }
9477
9483
  const sheetId = env.model.getters.getActiveSheetId();
9478
- const selection = env.model.getters.getSelection().zones;
9479
- interactiveAddFilter(env, sheetId, selection);
9484
+ interactiveAddFilter(env, sheetId, env.model.getters.getSelectedZones());
9480
9485
  };
9481
9486
  const FILTERS_REMOVE_FILTER_TABLE = (env) => {
9482
9487
  const sheetId = env.model.getters.getActiveSheetId();
@@ -21340,6 +21345,11 @@ class Composer extends owl.Component {
21340
21345
  onBlur() {
21341
21346
  this.isKeyStillDown = false;
21342
21347
  }
21348
+ onContextMenu(ev) {
21349
+ if (this.env.model.getters.getEditionMode() === "inactive") {
21350
+ this.props.onInputContextMenu?.(ev);
21351
+ }
21352
+ }
21343
21353
  // ---------------------------------------------------------------------------
21344
21354
  // Private
21345
21355
  // ---------------------------------------------------------------------------
@@ -21561,6 +21571,7 @@ Composer.props = {
21561
21571
  onComposerCellFocused: { type: Function, optional: true },
21562
21572
  onComposerContentFocused: Function,
21563
21573
  isDefaultFocus: { type: Boolean, optional: true },
21574
+ onInputContextMenu: { type: Function, optional: true },
21564
21575
  };
21565
21576
 
21566
21577
  const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
@@ -21637,6 +21648,7 @@ class GridComposer extends owl.Component {
21637
21648
  isDefaultFocus: true,
21638
21649
  onComposerContentFocused: this.props.onComposerContentFocused,
21639
21650
  onComposerCellFocused: this.props.onComposerCellFocused,
21651
+ onInputContextMenu: this.props.onInputContextMenu,
21640
21652
  };
21641
21653
  }
21642
21654
  get containerStyle() {
@@ -21725,6 +21737,7 @@ GridComposer.props = {
21725
21737
  onComposerContentFocused: Function,
21726
21738
  gridDims: Object,
21727
21739
  onComposerCellFocused: Function,
21740
+ onInputContextMenu: Function,
21728
21741
  };
21729
21742
 
21730
21743
  const CSS$1 = css /* scss */ `
@@ -24060,8 +24073,8 @@ class Grid extends owl.Component {
24060
24073
  else if (this.env.model.getters.getActiveRows().has(row)) {
24061
24074
  type = "ROW";
24062
24075
  }
24063
- const { x, y, width, height } = this.env.model.getters.getVisibleRect(lastZone);
24064
- this.toggleContextMenu(type, x + width, y + height);
24076
+ const { x, y, width } = this.env.model.getters.getVisibleRect(lastZone);
24077
+ this.toggleContextMenu(type, this.canvasPosition.x + x + width, this.canvasPosition.y + y);
24065
24078
  }
24066
24079
  onCellRightClicked(col, row, { x, y }) {
24067
24080
  const zones = this.env.model.getters.getSelectedZones();
@@ -26388,29 +26401,12 @@ function convertWidthFromExcel(width) {
26388
26401
  return width;
26389
26402
  return Math.round((width / WIDTH_FACTOR) * 100) / 100;
26390
26403
  }
26391
- function convertBorderDescr(descr) {
26392
- if (!descr) {
26393
- return undefined;
26394
- }
26395
- return {
26396
- style: descr.style,
26397
- color: { rgb: descr.color },
26398
- };
26399
- }
26400
26404
  function extractStyle(cell, data) {
26401
26405
  let style = {};
26402
26406
  if (cell.style) {
26403
26407
  style = data.styles[cell.style];
26404
26408
  }
26405
26409
  const format = extractFormat(cell, data);
26406
- const exportedBorder = {};
26407
- if (cell.border) {
26408
- const border = data.borders[cell.border];
26409
- exportedBorder.left = convertBorderDescr(border.left);
26410
- exportedBorder.right = convertBorderDescr(border.right);
26411
- exportedBorder.bottom = convertBorderDescr(border.bottom);
26412
- exportedBorder.top = convertBorderDescr(border.top);
26413
- }
26414
26410
  const styles = {
26415
26411
  font: {
26416
26412
  size: style?.fontSize || DEFAULT_FONT_SIZE,
@@ -26424,7 +26420,7 @@ function extractStyle(cell, data) {
26424
26420
  }
26425
26421
  : { reservedAttribute: "none" },
26426
26422
  numFmt: format ? { format: format, id: 0 /* id not used for export */ } : undefined,
26427
- border: exportedBorder || {},
26423
+ border: cell.border || 0,
26428
26424
  alignment: {
26429
26425
  horizontal: style.align,
26430
26426
  vertical: style.verticalAlign
@@ -26456,15 +26452,12 @@ function extractFormat(cell, data) {
26456
26452
  return undefined;
26457
26453
  }
26458
26454
  function normalizeStyle(construct, styles) {
26459
- const { id: fontId } = pushElement(styles["font"], construct.fonts);
26460
- const { id: fillId } = pushElement(styles["fill"], construct.fills);
26461
- const { id: borderId } = pushElement(styles["border"], construct.borders);
26462
26455
  // Normalize this
26463
26456
  const numFmtId = convertFormat(styles["numFmt"], construct.numFmts);
26464
26457
  const style = {
26465
- fontId,
26466
- fillId,
26467
- borderId,
26458
+ fontId: pushElement(styles.font, construct.fonts),
26459
+ fillId: pushElement(styles.fill, construct.fills),
26460
+ borderId: styles.border,
26468
26461
  numFmtId,
26469
26462
  alignment: {
26470
26463
  vertical: styles.alignment.vertical,
@@ -26472,8 +26465,7 @@ function normalizeStyle(construct, styles) {
26472
26465
  wrapText: styles.alignment.wrapText,
26473
26466
  },
26474
26467
  };
26475
- const { id } = pushElement(style, construct.styles);
26476
- return id;
26468
+ return pushElement(style, construct.styles);
26477
26469
  }
26478
26470
  function convertFormat(format, numFmtStructure) {
26479
26471
  if (!format) {
@@ -26481,8 +26473,7 @@ function convertFormat(format, numFmtStructure) {
26481
26473
  }
26482
26474
  let formatId = XLSX_FORMAT_MAP[format.format];
26483
26475
  if (!formatId) {
26484
- const { id } = pushElement(format, numFmtStructure);
26485
- formatId = id + FIRST_NUMFMT_ID;
26476
+ formatId = pushElement(format, numFmtStructure) + FIRST_NUMFMT_ID;
26486
26477
  }
26487
26478
  return formatId;
26488
26479
  }
@@ -26507,20 +26498,15 @@ function addRelsToFile(relsFiles, path, rel) {
26507
26498
  return id;
26508
26499
  }
26509
26500
  function pushElement(property, propertyList) {
26510
- for (let [key, value] of Object.entries(propertyList)) {
26511
- if (JSON.stringify(value) === JSON.stringify(property)) {
26512
- return { id: parseInt(key, 10), list: propertyList };
26501
+ let len = propertyList.length;
26502
+ const operator = typeof property === "object" ? deepEquals : (a, b) => a === b;
26503
+ for (let i = 0; i < len; i++) {
26504
+ if (operator(property, propertyList[i])) {
26505
+ return i;
26513
26506
  }
26514
26507
  }
26515
- let elemId = propertyList.findIndex((elem) => JSON.stringify(elem) === JSON.stringify(property));
26516
- if (elemId === -1) {
26517
- propertyList.push(property);
26518
- elemId = propertyList.length - 1;
26519
- }
26520
- return {
26521
- id: elemId,
26522
- list: propertyList,
26523
- };
26508
+ propertyList[propertyList.length] = property;
26509
+ return propertyList.length - 1;
26524
26510
  }
26525
26511
  const chartIds = [];
26526
26512
  /**
@@ -27226,7 +27212,25 @@ function parseXML(xmlString, mimeType = "text/xml") {
27226
27212
  }
27227
27213
  return document;
27228
27214
  }
27229
- function getDefaultXLSXStructure() {
27215
+ function convertBorderDescr(descr) {
27216
+ if (!descr) {
27217
+ return undefined;
27218
+ }
27219
+ return {
27220
+ style: descr.style,
27221
+ color: { rgb: descr.color },
27222
+ };
27223
+ }
27224
+ function getDefaultXLSXStructure(data) {
27225
+ const xlsxBorders = Object.values(data.borders).map((border) => {
27226
+ return {
27227
+ left: convertBorderDescr(border.left),
27228
+ right: convertBorderDescr(border.right),
27229
+ bottom: convertBorderDescr(border.bottom),
27230
+ top: convertBorderDescr(border.top),
27231
+ };
27232
+ });
27233
+ const borders = [{}, ...xlsxBorders];
27230
27234
  return {
27231
27235
  relsFiles: [],
27232
27236
  sharedStrings: [],
@@ -27249,7 +27253,7 @@ function getDefaultXLSXStructure() {
27249
27253
  },
27250
27254
  ],
27251
27255
  fills: [{ reservedAttribute: "none" }, { reservedAttribute: "gray125" }],
27252
- borders: [{}],
27256
+ borders,
27253
27257
  numFmts: [],
27254
27258
  dxfs: [],
27255
27259
  };
@@ -29247,7 +29251,7 @@ class BordersPlugin extends CorePlugin {
29247
29251
  this.clearBorders(cmd.sheetId, cmd.target);
29248
29252
  break;
29249
29253
  case "REMOVE_COLUMNS_ROWS":
29250
- for (let el of cmd.elements) {
29254
+ for (let el of [...cmd.elements].sort((a, b) => b - a)) {
29251
29255
  if (cmd.dimension === "COL") {
29252
29256
  this.shiftBordersHorizontally(cmd.sheetId, el + 1, -1);
29253
29257
  }
@@ -31200,7 +31204,17 @@ class FiltersPlugin extends CorePlugin {
31200
31204
  }
31201
31205
  }
31202
31206
  exportForExcel(data) {
31203
- this.export(data);
31207
+ for (const sheet of data.sheets) {
31208
+ for (const filterTable of this.getFilterTables(sheet.id)) {
31209
+ if (zoneToDimension(filterTable.zone).numberOfRows === 1) {
31210
+ continue;
31211
+ }
31212
+ sheet.filterTables.push({
31213
+ range: zoneToXc(filterTable.zone),
31214
+ filters: [],
31215
+ });
31216
+ }
31217
+ }
31204
31218
  }
31205
31219
  }
31206
31220
 
@@ -35068,12 +35082,13 @@ class SheetViewPlugin extends UIPlugin {
35068
35082
  case "AlterZone":
35069
35083
  break;
35070
35084
  case "ZonesSelected":
35085
+ const sheetId = this.getters.getActiveSheetId();
35071
35086
  let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
35072
35087
  if (event.mode === "updateAnchor") {
35073
35088
  const oldZone = event.previousAnchor.zone;
35074
35089
  const newZone = event.anchor.zone;
35075
35090
  // altering a zone should not move the viewport in a dimension that wasn't changed
35076
- const { top, bottom, left, right } = this.getters.getActiveMainViewport();
35091
+ const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
35077
35092
  if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
35078
35093
  col = left > col || col > right ? left : col;
35079
35094
  }
@@ -35081,10 +35096,9 @@ class SheetViewPlugin extends UIPlugin {
35081
35096
  row = top > row || row > bottom ? top : row;
35082
35097
  }
35083
35098
  }
35084
- const sheetId = this.getters.getActiveSheetId();
35085
35099
  col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
35086
35100
  row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
35087
- this.refreshViewport(this.getters.getActiveSheetId(), { col, row });
35101
+ this.refreshViewport(sheetId, { col, row });
35088
35102
  break;
35089
35103
  }
35090
35104
  }
@@ -35108,16 +35122,16 @@ class SheetViewPlugin extends UIPlugin {
35108
35122
  this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
35109
35123
  break;
35110
35124
  case "SHIFT_VIEWPORT_DOWN":
35111
- const { top } = this.getActiveMainViewport();
35112
35125
  const sheetId = this.getters.getActiveSheetId();
35113
- const shiftedOffsetY = this.clipOffsetY(this.getters.getRowDimensions(sheetId, top).start + this.sheetViewHeight);
35114
- this.shiftVertically(shiftedOffsetY);
35126
+ const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
35127
+ const topRowDims = this.getters.getRowDimensions(sheetId, top);
35128
+ this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
35115
35129
  break;
35116
35130
  case "SHIFT_VIEWPORT_UP": {
35117
- const { top } = this.getActiveMainViewport();
35118
35131
  const sheetId = this.getters.getActiveSheetId();
35119
- const shiftedOffsetY = this.clipOffsetY(this.getters.getRowDimensions(sheetId, top).end - this.sheetViewHeight);
35120
- this.shiftVertically(shiftedOffsetY);
35132
+ const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
35133
+ const topRowDims = this.getters.getRowDimensions(sheetId, top);
35134
+ this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
35121
35135
  break;
35122
35136
  }
35123
35137
  case "REMOVE_COLUMNS_ROWS":
@@ -35479,17 +35493,6 @@ class SheetViewPlugin extends UIPlugin {
35479
35493
  const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
35480
35494
  Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
35481
35495
  }
35482
- /**
35483
- * Clip the vertical offset within the allowed range.
35484
- * Not above the sheet, nor below the sheet.
35485
- */
35486
- clipOffsetY(offsetY) {
35487
- const { height } = this.getMainViewportRect();
35488
- const maxOffset = height - this.sheetViewHeight;
35489
- offsetY = Math.min(offsetY, maxOffset);
35490
- offsetY = Math.max(offsetY, 0);
35491
- return offsetY;
35492
- }
35493
35496
  getViewportOffset(sheetId) {
35494
35497
  return {
35495
35498
  x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
@@ -35545,12 +35548,15 @@ class SheetViewPlugin extends UIPlugin {
35545
35548
  * viewport top.
35546
35549
  */
35547
35550
  shiftVertically(offset) {
35548
- const { top } = this.getActiveMainViewport();
35551
+ const sheetId = this.getters.getActiveSheetId();
35552
+ const { top } = this.getMainInternalViewport(sheetId);
35549
35553
  const { scrollX } = this.getActiveSheetScrollInfo();
35550
35554
  this.setSheetViewOffset(scrollX, offset);
35551
35555
  const { anchor } = this.getters.getSelection();
35552
- const deltaRow = this.getActiveMainViewport().top - top;
35553
- this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
35556
+ if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
35557
+ const deltaRow = this.getMainInternalViewport(sheetId).top - top;
35558
+ this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
35559
+ }
35554
35560
  }
35555
35561
  getVisibleFigures() {
35556
35562
  const sheetId = this.getters.getActiveSheetId();
@@ -43100,7 +43106,6 @@ css /* scss */ `
43100
43106
  cursor: pointer;
43101
43107
  }
43102
43108
  `;
43103
- let tKey = 1;
43104
43109
  class SpreadsheetDashboard extends owl.Component {
43105
43110
  static template = "o-spreadsheet-SpreadsheetDashboard";
43106
43111
  static components = {
@@ -43178,13 +43183,9 @@ class SpreadsheetDashboard extends owl.Component {
43178
43183
  coordinates: rect,
43179
43184
  position: { col, row },
43180
43185
  action,
43181
- // we can't rely on position only because a row or a column could
43182
- // be inserted at any time.
43183
- tKey: `${tKey}-${col}-${row}`,
43184
43186
  });
43185
43187
  }
43186
43188
  }
43187
- tKey++;
43188
43189
  return cells;
43189
43190
  }
43190
43191
  getClickableAction(position) {
@@ -46322,8 +46323,7 @@ function addContent(content, sharedStrings, forceString = false) {
46322
46323
  attrs.push(["t", "b"]);
46323
46324
  }
46324
46325
  else if (forceString || !isNumber(value)) {
46325
- const { id } = pushElement(content, sharedStrings);
46326
- value = id.toString();
46326
+ value = pushElement(content, sharedStrings);
46327
46327
  attrs.push(["t", "s"]);
46328
46328
  }
46329
46329
  return { attrs, node: escapeXml /*xml*/ `<v>${value}</v>` };
@@ -46448,8 +46448,7 @@ function addCellIsRule(cf, rule, dxfs) {
46448
46448
  if (rule.style.fillColor) {
46449
46449
  dxf.fill = { fgColor: { rgb: rule.style.fillColor } };
46450
46450
  }
46451
- const { id } = pushElement(dxf, dxfs);
46452
- ruleAttributes.push(["dxfId", id]);
46451
+ ruleAttributes.push(["dxfId", pushElement(dxf, dxfs)]);
46453
46452
  return escapeXml /*xml*/ `
46454
46453
  <conditionalFormatting sqref="${cf.ranges.join(" ")}">
46455
46454
  <cfRule ${formatAttributes(ruleAttributes)}>
@@ -47253,7 +47252,7 @@ function addSheetViews(sheet) {
47253
47252
  */
47254
47253
  function getXLSX(data) {
47255
47254
  const files = [];
47256
- const construct = getDefaultXLSXStructure();
47255
+ const construct = getDefaultXLSXStructure(data);
47257
47256
  files.push(createWorkbook(data, construct));
47258
47257
  files.push(...createWorksheets(data, construct));
47259
47258
  files.push(createStylesSheet(construct));
@@ -48094,6 +48093,6 @@ exports.setTranslationMethod = setTranslationMethod;
48094
48093
  exports.tokenize = tokenize;
48095
48094
 
48096
48095
 
48097
- __info__.version = '16.3.31';
48098
- __info__.date = '2024-04-05T13:57:05.657Z';
48099
- __info__.hash = '052efd4';
48096
+ __info__.version = '16.3.34';
48097
+ __info__.date = '2024-04-26T07:37:12.329Z';
48098
+ __info__.hash = '196324c';
@@ -4089,11 +4089,6 @@ declare class SheetViewPlugin extends UIPlugin {
4089
4089
  private resizeSheetView;
4090
4090
  private recomputeViewports;
4091
4091
  private setSheetViewOffset;
4092
- /**
4093
- * Clip the vertical offset within the allowed range.
4094
- * Not above the sheet, nor below the sheet.
4095
- */
4096
- private clipOffsetY;
4097
4092
  private getViewportOffset;
4098
4093
  private resetViewports;
4099
4094
  /**
@@ -6093,7 +6088,6 @@ interface ClickableCell {
6093
6088
  coordinates: Rect;
6094
6089
  position: Position$1;
6095
6090
  action: (position: CellPosition, env: SpreadsheetChildEnv) => void;
6096
- tKey: string;
6097
6091
  }
6098
6092
  declare class SpreadsheetDashboard extends Component<Props$e, SpreadsheetChildEnv> {
6099
6093
  static template: string;
@@ -6570,6 +6564,7 @@ interface ComposerProps {
6570
6564
  delimitation?: DOMDimension;
6571
6565
  onComposerContentFocused: () => void;
6572
6566
  onComposerCellFocused?: (content: String) => void;
6567
+ onInputContextMenu?: (event: MouseEvent) => void;
6573
6568
  isDefaultFocus?: boolean;
6574
6569
  }
6575
6570
  interface ComposerState$1 {
@@ -6630,6 +6625,7 @@ declare class Composer extends Component<ComposerProps, SpreadsheetChildEnv> {
6630
6625
  onMousedown(ev: MouseEvent): void;
6631
6626
  onClick(): void;
6632
6627
  onBlur(): void;
6628
+ onContextMenu(ev: MouseEvent): void;
6633
6629
  private processContent;
6634
6630
  /**
6635
6631
  * Get the HTML content corresponding to the current composer token, divided by lines.
@@ -6797,6 +6793,7 @@ interface Props$5 {
6797
6793
  onComposerContentFocused: () => void;
6798
6794
  onComposerCellFocused: () => void;
6799
6795
  gridDims: DOMDimension;
6796
+ onInputContextMenu: (event: MouseEvent) => void;
6800
6797
  }
6801
6798
  /**
6802
6799
  * This component is a composer which positions itself on the grid at the anchor cell.
@@ -7101,7 +7098,7 @@ declare function chartFontColor(backgroundColor: Color | undefined): Color;
7101
7098
  /**
7102
7099
  * Get a default chart js configuration
7103
7100
  */
7104
- declare function getDefaultChartJsRuntime(chart: AbstractChart, labels: string[], fontColor: Color, dataSetsFormat?: Format | undefined): ChartConfiguration;
7101
+ declare function getDefaultChartJsRuntime(chart: AbstractChart, labels: string[], fontColor: Color, dataSetsFormat?: Format | undefined, truncateLabels?: boolean): ChartConfiguration;
7105
7102
  /** See https://www.chartjs.org/docs/latest/charts/area.html#filling-modes */
7106
7103
  declare function getFillingMode(index: number): "origin" | number;
7107
7104