@odoo/o-spreadsheet 17.4.6 → 17.4.8

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.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 17.4.6
6
- * @date 2024-08-26T13:50:49.623Z
7
- * @hash f5648d9
5
+ * @version 17.4.8
6
+ * @date 2024-09-17T08:10:18.777Z
7
+ * @hash caad8bd
8
8
  */
9
9
 
10
10
  'use strict';
@@ -4561,6 +4561,17 @@ function reorderZone(zone) {
4561
4561
  }
4562
4562
  return zone;
4563
4563
  }
4564
+ function aggregatePositionsToZones(positions) {
4565
+ const result = {};
4566
+ for (const position of positions) {
4567
+ result[position.sheetId] ??= [];
4568
+ result[position.sheetId].push(positionToZone(position));
4569
+ }
4570
+ for (const sheetId in result) {
4571
+ result[sheetId] = recomputeZones(result[sheetId]);
4572
+ }
4573
+ return result;
4574
+ }
4564
4575
  /**
4565
4576
  * This function returns a zone with coordinates modified according to the change
4566
4577
  * applied to the zone. It may be possible to change the zone by resizing or moving
@@ -6776,9 +6787,11 @@ class CellClipboardHandler extends AbstractCellClipboardHandler {
6776
6787
  const targetCell = this.getters.getEvaluatedCell(target);
6777
6788
  const originFormat = origin.cell?.format ?? origin.evaluatedCell.format;
6778
6789
  if (clipboardOption?.pasteOption === "asValue") {
6779
- const locale = this.getters.getLocale();
6780
- const content = formatValue(origin.evaluatedCell.value, { locale });
6781
- this.dispatch("UPDATE_CELL", { ...target, content, format: originFormat });
6790
+ this.dispatch("UPDATE_CELL", {
6791
+ ...target,
6792
+ content: origin.evaluatedCell.value?.toString() || "",
6793
+ format: originFormat,
6794
+ });
6782
6795
  return;
6783
6796
  }
6784
6797
  if (clipboardOption?.pasteOption === "onlyFormat") {
@@ -28380,8 +28393,8 @@ const CREATE_PIVOT = (env) => {
28380
28393
  env.openSidePanel("PivotSidePanel", { pivotId });
28381
28394
  }
28382
28395
  };
28383
- const REINSERT_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pivotId, index) => ({
28384
- id: `reinsert_pivot_${env.model.getters.getPivotFormulaId(pivotId)}`,
28396
+ const REINSERT_DYNAMIC_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pivotId, index) => ({
28397
+ id: `reinsert_dynamic_pivot_${env.model.getters.getPivotFormulaId(pivotId)}`,
28385
28398
  name: env.model.getters.getPivotDisplayName(pivotId),
28386
28399
  sequence: index,
28387
28400
  execute: (env) => {
@@ -28393,9 +28406,30 @@ const REINSERT_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pi
28393
28406
  col: zone.left,
28394
28407
  row: zone.top,
28395
28408
  sheetId: env.model.getters.getActiveSheetId(),
28409
+ pivotMode: "dynamic",
28396
28410
  });
28397
28411
  env.model.dispatch("REFRESH_PIVOT", { id: pivotId });
28398
28412
  },
28413
+ isVisible: (env) => env.model.getters.getPivot(pivotId).isValid(),
28414
+ }));
28415
+ const REINSERT_STATIC_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pivotId, index) => ({
28416
+ id: `reinsert_static_pivot_${env.model.getters.getPivotFormulaId(pivotId)}`,
28417
+ name: env.model.getters.getPivotDisplayName(pivotId),
28418
+ sequence: index,
28419
+ execute: (env) => {
28420
+ const zone = env.model.getters.getSelectedZone();
28421
+ const table = env.model.getters.getPivot(pivotId).getTableStructure().export();
28422
+ env.model.dispatch("INSERT_PIVOT_WITH_TABLE", {
28423
+ pivotId,
28424
+ table,
28425
+ col: zone.left,
28426
+ row: zone.top,
28427
+ sheetId: env.model.getters.getActiveSheetId(),
28428
+ pivotMode: "static",
28429
+ });
28430
+ env.model.dispatch("REFRESH_PIVOT", { id: pivotId });
28431
+ },
28432
+ isVisible: (env) => env.model.getters.getPivot(pivotId).isValid(),
28399
28433
  }));
28400
28434
  //------------------------------------------------------------------------------
28401
28435
  // Image
@@ -29261,13 +29295,21 @@ const splitToColumns = {
29261
29295
  isEnabled: (env) => env.model.getters.isSingleColSelected(),
29262
29296
  icon: "o-spreadsheet-Icon.SPLIT_TEXT",
29263
29297
  };
29264
- const reinsertPivotMenu = {
29265
- id: "reinsert_pivot",
29266
- name: _t("Re-insert pivot"),
29298
+ const reinsertDynamicPivotMenu = {
29299
+ id: "reinsert_dynamic_pivot",
29300
+ name: _t("Re-insert dynamic pivot"),
29301
+ sequence: 1020,
29302
+ icon: "o-spreadsheet-Icon.INSERT_PIVOT",
29303
+ children: [REINSERT_DYNAMIC_PIVOT_CHILDREN],
29304
+ isVisible: (env) => env.model.getters.getPivotIds().some((id) => env.model.getters.getPivot(id).isValid()),
29305
+ };
29306
+ const reinsertStaticPivotMenu = {
29307
+ id: "reinsert_static_pivot",
29308
+ name: _t("Re-insert static pivot"),
29267
29309
  sequence: 1020,
29268
29310
  icon: "o-spreadsheet-Icon.INSERT_PIVOT",
29269
- children: [REINSERT_PIVOT_CHILDREN],
29270
- isVisible: (env) => env.model.getters.getPivotIds().length > 0,
29311
+ children: [REINSERT_STATIC_PIVOT_CHILDREN],
29312
+ isVisible: (env) => env.model.getters.getPivotIds().some((id) => env.model.getters.getPivot(id).isValid()),
29271
29313
  };
29272
29314
 
29273
29315
  var ACTION_DATA = /*#__PURE__*/Object.freeze({
@@ -29275,7 +29317,8 @@ var ACTION_DATA = /*#__PURE__*/Object.freeze({
29275
29317
  createRemoveFilter: createRemoveFilter,
29276
29318
  createRemoveFilterTool: createRemoveFilterTool,
29277
29319
  dataCleanup: dataCleanup,
29278
- reinsertPivotMenu: reinsertPivotMenu,
29320
+ reinsertDynamicPivotMenu: reinsertDynamicPivotMenu,
29321
+ reinsertStaticPivotMenu: reinsertStaticPivotMenu,
29279
29322
  removeDuplicates: removeDuplicates,
29280
29323
  sortAscending: sortAscending,
29281
29324
  sortDescending: sortDescending,
@@ -30757,7 +30800,8 @@ topbarMenuRegistry
30757
30800
  };
30758
30801
  });
30759
30802
  })
30760
- .addChild("reinsert_pivot", ["data"], reinsertPivotMenu);
30803
+ .addChild("reinsert_dynamic_pivot", ["data"], reinsertDynamicPivotMenu)
30804
+ .addChild("reinsert_static_pivot", ["data"], reinsertStaticPivotMenu);
30761
30805
 
30762
30806
  class OTRegistry extends Registry {
30763
30807
  /**
@@ -44067,6 +44111,18 @@ function convertOperator(operator) {
44067
44111
  // -------------------------------------
44068
44112
  // WORKSHEET HELPERS
44069
44113
  // -------------------------------------
44114
+ function getCellType(value) {
44115
+ switch (typeof value) {
44116
+ case "boolean":
44117
+ return "b";
44118
+ case "string":
44119
+ return "str";
44120
+ case "number":
44121
+ return "n";
44122
+ default:
44123
+ return undefined;
44124
+ }
44125
+ }
44070
44126
  function convertHeightToExcel(height) {
44071
44127
  return Math.round(HEIGHT_FACTOR * height * 100) / 100;
44072
44128
  }
@@ -54317,8 +54373,9 @@ class Evaluator {
54317
54373
  }
54318
54374
  getCellsDependingOn(positions) {
54319
54375
  const ranges = [];
54320
- for (const position of positions) {
54321
- ranges.push({ sheetId: position.sheetId, zone: positionToZone(position) });
54376
+ const zonesBySheetIds = aggregatePositionsToZones(positions);
54377
+ for (const sheetId in zonesBySheetIds) {
54378
+ ranges.push(...zonesBySheetIds[sheetId].map((zone) => ({ sheetId, zone })));
54322
54379
  }
54323
54380
  return this.formulaDependencies().getCellsDependingOn(ranges);
54324
54381
  }
@@ -57228,9 +57285,9 @@ class Session extends EventBus {
57228
57285
  /**
57229
57286
  * Notify the server that the user client left the collaborative session
57230
57287
  */
57231
- leave(data) {
57288
+ async leave(data) {
57232
57289
  if (Object.keys(this.clients).length === 1 && this.processedRevisions.size) {
57233
- this.snapshot(data());
57290
+ await this.snapshot(data());
57234
57291
  }
57235
57292
  delete this.clients[this.clientId];
57236
57293
  this.transportService.leave(this.clientId);
@@ -57243,12 +57300,12 @@ class Session extends EventBus {
57243
57300
  /**
57244
57301
  * Send a snapshot of the spreadsheet to the collaboration server
57245
57302
  */
57246
- snapshot(data) {
57303
+ async snapshot(data) {
57247
57304
  if (this.pendingMessages.length !== 0) {
57248
57305
  return;
57249
57306
  }
57250
57307
  const snapshotId = this.uuidGenerator.uuidv4();
57251
- this.transportService.sendMessage({
57308
+ await this.transportService.sendMessage({
57252
57309
  type: "SNAPSHOT",
57253
57310
  nextRevisionId: snapshotId,
57254
57311
  serverRevisionId: this.serverRevisionId,
@@ -57932,7 +57989,7 @@ class InsertPivotPlugin extends UIPlugin {
57932
57989
  this.duplicatePivotInNewSheet(cmd.pivotId, cmd.newPivotId, cmd.newSheetId);
57933
57990
  break;
57934
57991
  case "INSERT_PIVOT_WITH_TABLE":
57935
- this.insertPivotWithTable(cmd.sheetId, cmd.col, cmd.row, cmd.pivotId, cmd.table);
57992
+ this.insertPivotWithTable(cmd.sheetId, cmd.col, cmd.row, cmd.pivotId, cmd.table, cmd.pivotMode);
57936
57993
  break;
57937
57994
  }
57938
57995
  }
@@ -58008,26 +58065,44 @@ class InsertPivotPlugin extends UIPlugin {
58008
58065
  }
58009
58066
  return name;
58010
58067
  }
58011
- insertPivotWithTable(sheetId, col, row, pivotId, table) {
58068
+ insertPivotWithTable(sheetId, col, row, pivotId, table, mode) {
58012
58069
  const { cols, rows, measures, fieldsType } = table;
58013
58070
  const pivotTable = new SpreadsheetPivotTable(cols, rows, measures, fieldsType || {});
58071
+ const numberOfHeaders = pivotTable.columns.length - 1;
58014
58072
  this.resizeSheet(sheetId, col, row, pivotTable);
58015
58073
  const pivotFormulaId = this.getters.getPivotFormulaId(pivotId);
58016
- this.dispatch("UPDATE_CELL", {
58017
- sheetId,
58018
- col,
58019
- row,
58020
- content: `=PIVOT(${pivotFormulaId})`,
58021
- });
58022
- const zone = {
58023
- left: col,
58024
- right: col,
58025
- top: row,
58026
- bottom: row,
58027
- };
58028
- const numberOfHeaders = pivotTable.columns.length - 1;
58074
+ let zone;
58075
+ if (mode === "dynamic") {
58076
+ this.dispatch("UPDATE_CELL", {
58077
+ sheetId,
58078
+ col,
58079
+ row,
58080
+ content: `=PIVOT(${pivotFormulaId})`,
58081
+ });
58082
+ zone = {
58083
+ left: col,
58084
+ right: col,
58085
+ top: row,
58086
+ bottom: row,
58087
+ };
58088
+ }
58089
+ else {
58090
+ this.dispatch("INSERT_PIVOT", {
58091
+ sheetId,
58092
+ col,
58093
+ row,
58094
+ pivotId,
58095
+ table: pivotTable.export(),
58096
+ });
58097
+ zone = {
58098
+ left: col,
58099
+ right: col + pivotTable.getNumberOfDataColumns(),
58100
+ top: row,
58101
+ bottom: row + numberOfHeaders + pivotTable.rows.length,
58102
+ };
58103
+ }
58029
58104
  this.dispatch("CREATE_TABLE", {
58030
- tableType: "dynamic",
58105
+ tableType: mode,
58031
58106
  sheetId,
58032
58107
  ranges: [this.getters.getRangeDataFromZone(sheetId, zone)],
58033
58108
  config: { ...PIVOT_TABLE_CONFIG, numberOfHeaders },
@@ -58589,6 +58664,7 @@ class CellComputedStylePlugin extends UIPlugin {
58589
58664
  handle(cmd) {
58590
58665
  if (invalidateEvaluationCommands.has(cmd.type) ||
58591
58666
  cmd.type === "UPDATE_CELL" ||
58667
+ cmd.type === "SET_FORMATTING" ||
58592
58668
  cmd.type === "EVALUATE_CELLS") {
58593
58669
  this.styles = {};
58594
58670
  this.borders = {};
@@ -60229,6 +60305,8 @@ class GridSelectionPlugin extends UIPlugin {
60229
60305
  this.selectedFigureId = null;
60230
60306
  break;
60231
60307
  }
60308
+ }
60309
+ finalize() {
60232
60310
  /** Any change to the selection has to be reflected in the selection processor. */
60233
60311
  this.selection.resetDefaultAnchor(this, deepCopy(this.gridSelection.anchor));
60234
60312
  }
@@ -61010,7 +61088,6 @@ class SheetViewPlugin extends UIPlugin {
61010
61088
  }
61011
61089
  }
61012
61090
  handle(cmd) {
61013
- this.cleanViewports();
61014
61091
  // changing the evaluation can hide/show rows because of data filters
61015
61092
  if (invalidateEvaluationCommands.has(cmd.type)) {
61016
61093
  for (const sheetId of this.getters.getSheetIds()) {
@@ -61026,6 +61103,7 @@ class SheetViewPlugin extends UIPlugin {
61026
61103
  break;
61027
61104
  case "UNDO":
61028
61105
  case "REDO":
61106
+ this.cleanViewports();
61029
61107
  for (const sheetId of this.getters.getSheetIds()) {
61030
61108
  this.sheetsWithDirtyViewports.add(sheetId);
61031
61109
  }
@@ -61080,6 +61158,9 @@ class SheetViewPlugin extends UIPlugin {
61080
61158
  }
61081
61159
  }
61082
61160
  break;
61161
+ case "DELETE_SHEET":
61162
+ this.cleanViewports();
61163
+ break;
61083
61164
  case "ACTIVATE_SHEET":
61084
61165
  this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
61085
61166
  break;
@@ -62367,6 +62448,17 @@ css /* scss */ `
62367
62448
  .o-bottom-bar-fade-in {
62368
62449
  background-image: linear-gradient(90deg, #cfcfcf, transparent 1%);
62369
62450
  }
62451
+
62452
+ .o-sheet-list {
62453
+ overflow-y: hidden;
62454
+ overflow-x: auto;
62455
+
62456
+ &::-webkit-scrollbar {
62457
+ display: none; /* Chrome */
62458
+ }
62459
+ -ms-overflow-style: none; /* IE and Edge */
62460
+ scrollbar-width: none; /* Firefox */
62461
+ }
62370
62462
  }
62371
62463
 
62372
62464
  .o-bottom-bar-arrows {
@@ -64340,7 +64432,7 @@ class Spreadsheet extends owl.Component {
64340
64432
 
64341
64433
  class LocalTransportService {
64342
64434
  listeners = [];
64343
- sendMessage(message) {
64435
+ async sendMessage(message) {
64344
64436
  for (const { callback } of this.listeners) {
64345
64437
  callback(message);
64346
64438
  }
@@ -66433,17 +66525,13 @@ function addFormula(cell) {
66433
66525
  if (!formula) {
66434
66526
  return { attrs: [], node: escapeXml `` };
66435
66527
  }
66436
- const attrs = [];
66437
- let node = escapeXml ``;
66438
- let cycle = escapeXml ``;
66439
- const XlsxFormula = adaptFormulaToExcel(formula);
66440
- // hack for cycles : if we don't set a value (be it 0 or #VALUE!), it will appear as invisible on excel,
66441
- // Making it very hard for the client to find where the recursion is.
66442
- if (cell.value === CellErrorType.CircularDependency) {
66443
- attrs.push(["t", "str"]);
66444
- cycle = escapeXml /*xml*/ `<v>${cell.value}</v>`;
66528
+ const type = getCellType(cell.value);
66529
+ if (type === undefined) {
66530
+ return { attrs: [], node: escapeXml `` };
66445
66531
  }
66446
- node = escapeXml /*xml*/ `<f>${XlsxFormula}</f>${cycle}`;
66532
+ const attrs = [["t", type]];
66533
+ const XlsxFormula = adaptFormulaToExcel(formula);
66534
+ const node = escapeXml /*xml*/ `<f>${XlsxFormula}</f><v>${cell.value}</v>`;
66447
66535
  return { attrs, node };
66448
66536
  }
66449
66537
  function addContent(content, sharedStrings, forceString = false) {
@@ -67857,8 +67945,8 @@ class Model extends EventBus {
67857
67945
  joinSession() {
67858
67946
  this.session.join(this.config.client);
67859
67947
  }
67860
- leaveSession() {
67861
- this.session.leave(lazy(() => this.exportData()));
67948
+ async leaveSession() {
67949
+ await this.session.leave(lazy(() => this.exportData()));
67862
67950
  }
67863
67951
  setupUiPlugin(Plugin) {
67864
67952
  const plugin = new Plugin(this.uiPluginConfig);
@@ -68330,6 +68418,7 @@ const helpers = {
68330
68418
  UNDO_REDO_PIVOT_COMMANDS,
68331
68419
  createPivotFormula,
68332
68420
  areDomainArgsFieldsValid,
68421
+ formatTickValue,
68333
68422
  };
68334
68423
  const links = {
68335
68424
  isMarkdownLink,
@@ -68460,6 +68549,6 @@ exports.tokenColors = tokenColors;
68460
68549
  exports.tokenize = tokenize;
68461
68550
 
68462
68551
 
68463
- __info__.version = "17.4.6";
68464
- __info__.date = "2024-08-26T13:50:49.623Z";
68465
- __info__.hash = "f5648d9";
68552
+ __info__.version = "17.4.8";
68553
+ __info__.date = "2024-09-17T08:10:18.777Z";
68554
+ __info__.hash = "caad8bd";
@@ -1283,6 +1283,7 @@ interface InsertPivotWithTableCommand {
1283
1283
  row: HeaderIndex;
1284
1284
  pivotId: UID;
1285
1285
  table: PivotTableData;
1286
+ pivotMode: "static" | "dynamic";
1286
1287
  }
1287
1288
  type CoreCommand =
1288
1289
  /** CELLS */
@@ -3769,7 +3770,7 @@ interface TransportService<T = any> {
3769
3770
  /**
3770
3771
  * Send a message to all clients
3771
3772
  */
3772
- sendMessage: (message: T) => void;
3773
+ sendMessage: (message: T) => Promise<void>;
3773
3774
  /**
3774
3775
  * Register a callback function which will be called each time
3775
3776
  * a new message is received.
@@ -3866,11 +3867,11 @@ declare class Session extends EventBus<CollaborativeEvent> {
3866
3867
  /**
3867
3868
  * Notify the server that the user client left the collaborative session
3868
3869
  */
3869
- leave(data: Lazy<WorkbookData>): void;
3870
+ leave(data: Lazy<WorkbookData>): Promise<void>;
3870
3871
  /**
3871
3872
  * Send a snapshot of the spreadsheet to the collaboration server
3872
3873
  */
3873
- snapshot(data: WorkbookData): void;
3874
+ snapshot(data: WorkbookData): Promise<void>;
3874
3875
  getClient(): Client;
3875
3876
  getConnectedClients(): Set<Client>;
3876
3877
  getRevisionId(): UID;
@@ -4829,6 +4830,7 @@ declare class GridSelectionPlugin extends UIPlugin {
4829
4830
  allowDispatch(cmd: LocalCommand): CommandResult;
4830
4831
  private handleEvent;
4831
4832
  handle(cmd: Command): void;
4833
+ finalize(): void;
4832
4834
  isGridSelectionActive(): boolean;
4833
4835
  getActiveSheet(): Readonly<Sheet>;
4834
4836
  getActiveSheetId(): UID;
@@ -5780,7 +5782,7 @@ declare class Model extends EventBus<any> implements CommandDispatcher {
5780
5782
  private readonly coreHandlers;
5781
5783
  constructor(data?: any, config?: Partial<ModelConfig>, stateUpdateMessages?: StateUpdateMessage[], uuidGenerator?: UuidGenerator, verboseImport?: boolean);
5782
5784
  joinSession(): void;
5783
- leaveSession(): void;
5785
+ leaveSession(): Promise<void>;
5784
5786
  private setupUiPlugin;
5785
5787
  /**
5786
5788
  * Initialize and properly configure a plugin.
@@ -9454,6 +9456,7 @@ declare function getChartAxisTitleRuntime(design?: AxisDesign): {
9454
9456
  };
9455
9457
  align: "start" | "center" | "end";
9456
9458
  } | undefined;
9459
+ declare function formatTickValue(localeFormat: LocaleFormat): (value: any) => any;
9457
9460
 
9458
9461
  /**
9459
9462
  * Get a default chart js configuration
@@ -9929,12 +9932,14 @@ declare const sortDescending: ActionSpec;
9929
9932
  declare const createRemoveFilter: ActionSpec;
9930
9933
  declare const createRemoveFilterTool: ActionSpec;
9931
9934
  declare const splitToColumns: ActionSpec;
9932
- declare const reinsertPivotMenu: ActionSpec;
9935
+ declare const reinsertDynamicPivotMenu: ActionSpec;
9936
+ declare const reinsertStaticPivotMenu: ActionSpec;
9933
9937
 
9934
9938
  declare const ACTION_DATA_createRemoveFilter: typeof createRemoveFilter;
9935
9939
  declare const ACTION_DATA_createRemoveFilterTool: typeof createRemoveFilterTool;
9936
9940
  declare const ACTION_DATA_dataCleanup: typeof dataCleanup;
9937
- declare const ACTION_DATA_reinsertPivotMenu: typeof reinsertPivotMenu;
9941
+ declare const ACTION_DATA_reinsertDynamicPivotMenu: typeof reinsertDynamicPivotMenu;
9942
+ declare const ACTION_DATA_reinsertStaticPivotMenu: typeof reinsertStaticPivotMenu;
9938
9943
  declare const ACTION_DATA_removeDuplicates: typeof removeDuplicates;
9939
9944
  declare const ACTION_DATA_sortAscending: typeof sortAscending;
9940
9945
  declare const ACTION_DATA_sortDescending: typeof sortDescending;
@@ -9946,7 +9951,8 @@ declare namespace ACTION_DATA {
9946
9951
  ACTION_DATA_createRemoveFilter as createRemoveFilter,
9947
9952
  ACTION_DATA_createRemoveFilterTool as createRemoveFilterTool,
9948
9953
  ACTION_DATA_dataCleanup as dataCleanup,
9949
- ACTION_DATA_reinsertPivotMenu as reinsertPivotMenu,
9954
+ ACTION_DATA_reinsertDynamicPivotMenu as reinsertDynamicPivotMenu,
9955
+ ACTION_DATA_reinsertStaticPivotMenu as reinsertStaticPivotMenu,
9950
9956
  ACTION_DATA_removeDuplicates as removeDuplicates,
9951
9957
  ACTION_DATA_sortAscending as sortAscending,
9952
9958
  ACTION_DATA_sortDescending as sortDescending,
@@ -11509,6 +11515,7 @@ declare const helpers: {
11509
11515
  UNDO_REDO_PIVOT_COMMANDS: string[];
11510
11516
  createPivotFormula: typeof createPivotFormula;
11511
11517
  areDomainArgsFieldsValid: typeof areDomainArgsFieldsValid;
11518
+ formatTickValue: typeof formatTickValue;
11512
11519
  };
11513
11520
  declare const links: {
11514
11521
  isMarkdownLink: typeof isMarkdownLink;