@odoo/o-spreadsheet 17.0.64 → 17.0.66
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/o-spreadsheet.cjs.js +54 -32
- package/dist/o-spreadsheet.esm.js +54 -32
- package/dist/o-spreadsheet.iife.js +54 -32
- package/dist/o-spreadsheet.iife.min.js +4 -4
- package/dist/o_spreadsheet.xml +3 -3
- package/package.json +1 -1
|
@@ -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.0.
|
|
6
|
-
* @date 2025-06-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.0.66
|
|
6
|
+
* @date 2025-06-19T18:23:36.231Z
|
|
7
|
+
* @hash fbd5c00
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -6668,19 +6668,26 @@ class FilterMenu extends owl.Component {
|
|
|
6668
6668
|
.filter(({ row }) => !this.env.model.getters.isRowHidden(sheetId, row))
|
|
6669
6669
|
.map(({ col, row }) => this.env.model.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue);
|
|
6670
6670
|
const filterValues = this.env.model.getters.getFilterValues({ sheetId, ...position });
|
|
6671
|
-
const
|
|
6672
|
-
const
|
|
6673
|
-
|
|
6674
|
-
const
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6682
|
-
|
|
6683
|
-
|
|
6671
|
+
const normalizedFilteredValues = new Set(filterValues.map(toLowerCase));
|
|
6672
|
+
const set = new Set();
|
|
6673
|
+
const values = [];
|
|
6674
|
+
const addValue = (value) => {
|
|
6675
|
+
const normalizedValue = toLowerCase(value);
|
|
6676
|
+
if (!set.has(normalizedValue)) {
|
|
6677
|
+
values.push({
|
|
6678
|
+
string: value || "",
|
|
6679
|
+
checked: !normalizedFilteredValues.has(normalizedValue),
|
|
6680
|
+
normalizedValue,
|
|
6681
|
+
});
|
|
6682
|
+
set.add(normalizedValue);
|
|
6683
|
+
}
|
|
6684
|
+
};
|
|
6685
|
+
cellValues.forEach(addValue);
|
|
6686
|
+
filterValues.forEach(addValue);
|
|
6687
|
+
return values.sort((val1, val2) => val1.normalizedValue.localeCompare(val2.normalizedValue, undefined, {
|
|
6688
|
+
numeric: true,
|
|
6689
|
+
sensitivity: "base",
|
|
6690
|
+
}));
|
|
6684
6691
|
}
|
|
6685
6692
|
checkValue(value) {
|
|
6686
6693
|
this.state.selectedValue = value.string;
|
|
@@ -10744,6 +10751,10 @@ const REMOVE_ROWS_ACTION = (env) => {
|
|
|
10744
10751
|
});
|
|
10745
10752
|
};
|
|
10746
10753
|
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
10754
|
+
if ((dimension === "COL" && env.model.getters.getActiveRows().size > 0) ||
|
|
10755
|
+
(dimension === "ROW" && env.model.getters.getActiveCols().size > 0)) {
|
|
10756
|
+
return false;
|
|
10757
|
+
}
|
|
10747
10758
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
10748
10759
|
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
10749
10760
|
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
@@ -21561,11 +21572,11 @@ class OTRegistry extends Registry {
|
|
|
21561
21572
|
* transformation function given
|
|
21562
21573
|
*/
|
|
21563
21574
|
addTransformation(executed, toTransforms, fn) {
|
|
21564
|
-
|
|
21565
|
-
|
|
21566
|
-
|
|
21567
|
-
|
|
21568
|
-
this.content[
|
|
21575
|
+
if (!this.content[executed]) {
|
|
21576
|
+
this.content[executed] = new Map();
|
|
21577
|
+
}
|
|
21578
|
+
for (const toTransform of toTransforms) {
|
|
21579
|
+
this.content[executed].set(toTransform, fn);
|
|
21569
21580
|
}
|
|
21570
21581
|
return this;
|
|
21571
21582
|
}
|
|
@@ -21574,7 +21585,7 @@ class OTRegistry extends Registry {
|
|
|
21574
21585
|
* that the executed command happened.
|
|
21575
21586
|
*/
|
|
21576
21587
|
getTransformation(toTransform, executed) {
|
|
21577
|
-
return this.content[
|
|
21588
|
+
return this.content[executed] && this.content[executed].get(toTransform);
|
|
21578
21589
|
}
|
|
21579
21590
|
}
|
|
21580
21591
|
const otRegistry = new OTRegistry();
|
|
@@ -32827,7 +32838,7 @@ class XlsxBaseExtractor {
|
|
|
32827
32838
|
*/
|
|
32828
32839
|
handleMissingValue(parentElement, missingElementName, optionalArgs) {
|
|
32829
32840
|
if (optionalArgs?.required) {
|
|
32830
|
-
if (optionalArgs?.default) {
|
|
32841
|
+
if (optionalArgs?.default !== undefined) {
|
|
32831
32842
|
this.warningManager.addParsingWarning(`Missing required ${missingElementName} in element <${parentElement.tagName}> of ${this.currentFile}, replacing it by the default value ${optionalArgs.default}`);
|
|
32832
32843
|
}
|
|
32833
32844
|
else {
|
|
@@ -44621,10 +44632,20 @@ function transform(toTransform, executed) {
|
|
|
44621
44632
|
*/
|
|
44622
44633
|
function transformAll(toTransform, executed) {
|
|
44623
44634
|
let transformedCommands = [...toTransform];
|
|
44635
|
+
const possibleTransformations = new Set(otRegistry.getKeys());
|
|
44624
44636
|
for (const executedCommand of executed) {
|
|
44625
|
-
|
|
44626
|
-
|
|
44627
|
-
|
|
44637
|
+
// If the executed command is not in the registry, we skip it
|
|
44638
|
+
// because we know there won't be any transformation impacting the
|
|
44639
|
+
// commands to transform.
|
|
44640
|
+
if (possibleTransformations.has(executedCommand.type)) {
|
|
44641
|
+
transformedCommands = transformedCommands.reduce((acc, cmd) => {
|
|
44642
|
+
const transformed = transform(cmd, executedCommand);
|
|
44643
|
+
if (transformed) {
|
|
44644
|
+
acc.push(transformed);
|
|
44645
|
+
}
|
|
44646
|
+
return acc;
|
|
44647
|
+
}, []);
|
|
44648
|
+
}
|
|
44628
44649
|
}
|
|
44629
44650
|
return transformedCommands;
|
|
44630
44651
|
}
|
|
@@ -45103,7 +45124,6 @@ class Session extends EventBus {
|
|
|
45103
45124
|
if (this.waitingAck) {
|
|
45104
45125
|
return;
|
|
45105
45126
|
}
|
|
45106
|
-
this.waitingAck = true;
|
|
45107
45127
|
this.sendPendingMessage();
|
|
45108
45128
|
}
|
|
45109
45129
|
/**
|
|
@@ -45133,6 +45153,7 @@ class Session extends EventBus {
|
|
|
45133
45153
|
throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.
|
|
45134
45154
|
${JSON.stringify(message)}`);
|
|
45135
45155
|
}
|
|
45156
|
+
this.waitingAck = true;
|
|
45136
45157
|
this.transportService.sendMessage({
|
|
45137
45158
|
...message,
|
|
45138
45159
|
serverRevisionId: this.serverRevisionId,
|
|
@@ -48179,7 +48200,7 @@ class SheetUIPlugin extends UIPlugin {
|
|
|
48179
48200
|
}
|
|
48180
48201
|
const position = this.getters.getCellPosition(cell.id);
|
|
48181
48202
|
const colSize = this.getters.getColSize(sheetId, position.col);
|
|
48182
|
-
if (cell.isFormula) {
|
|
48203
|
+
if (cell.isFormula || this.getters.getArrayFormulaSpreadingOn(position)) {
|
|
48183
48204
|
const content = this.getters.getEvaluatedCell(position).formattedValue;
|
|
48184
48205
|
const evaluatedSize = getCellContentHeight(this.ctx, content, cell?.style, colSize);
|
|
48185
48206
|
if (evaluatedSize > evaluatedRowSize && evaluatedSize > DEFAULT_CELL_HEIGHT) {
|
|
@@ -50173,9 +50194,10 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
50173
50194
|
const filteredValues = this.filterValues[sheetId]?.[filter.id]?.map(toLowerCase);
|
|
50174
50195
|
if (!filteredValues || !filter.filteredZone)
|
|
50175
50196
|
continue;
|
|
50197
|
+
const filteredValuesSet = new Set(filteredValues);
|
|
50176
50198
|
for (let row = filter.filteredZone.top; row <= filter.filteredZone.bottom; row++) {
|
|
50177
50199
|
const value = this.getCellValueAsString(sheetId, filter.col, row);
|
|
50178
|
-
if (
|
|
50200
|
+
if (filteredValuesSet.has(value)) {
|
|
50179
50201
|
hiddenRows.add(row);
|
|
50180
50202
|
}
|
|
50181
50203
|
}
|
|
@@ -58328,6 +58350,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
58328
58350
|
exports.tokenize = tokenize;
|
|
58329
58351
|
|
|
58330
58352
|
|
|
58331
|
-
__info__.version = "17.0.
|
|
58332
|
-
__info__.date = "2025-06-
|
|
58333
|
-
__info__.hash = "
|
|
58353
|
+
__info__.version = "17.0.66";
|
|
58354
|
+
__info__.date = "2025-06-19T18:23:36.231Z";
|
|
58355
|
+
__info__.hash = "fbd5c00";
|
|
@@ -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.0.
|
|
6
|
-
* @date 2025-06-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.0.66
|
|
6
|
+
* @date 2025-06-19T18:23:36.231Z
|
|
7
|
+
* @hash fbd5c00
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { Component, useRef, onMounted, useEffect, onWillPatch, useState, onWillUpdateProps, onPatched, useComponent, useExternalListener, onWillUnmount, onWillStart, xml, useChildSubEnv, useSubEnv, markRaw } from '@odoo/owl';
|
|
@@ -6666,19 +6666,26 @@ class FilterMenu extends Component {
|
|
|
6666
6666
|
.filter(({ row }) => !this.env.model.getters.isRowHidden(sheetId, row))
|
|
6667
6667
|
.map(({ col, row }) => this.env.model.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue);
|
|
6668
6668
|
const filterValues = this.env.model.getters.getFilterValues({ sheetId, ...position });
|
|
6669
|
-
const
|
|
6670
|
-
const
|
|
6671
|
-
|
|
6672
|
-
const
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6669
|
+
const normalizedFilteredValues = new Set(filterValues.map(toLowerCase));
|
|
6670
|
+
const set = new Set();
|
|
6671
|
+
const values = [];
|
|
6672
|
+
const addValue = (value) => {
|
|
6673
|
+
const normalizedValue = toLowerCase(value);
|
|
6674
|
+
if (!set.has(normalizedValue)) {
|
|
6675
|
+
values.push({
|
|
6676
|
+
string: value || "",
|
|
6677
|
+
checked: !normalizedFilteredValues.has(normalizedValue),
|
|
6678
|
+
normalizedValue,
|
|
6679
|
+
});
|
|
6680
|
+
set.add(normalizedValue);
|
|
6681
|
+
}
|
|
6682
|
+
};
|
|
6683
|
+
cellValues.forEach(addValue);
|
|
6684
|
+
filterValues.forEach(addValue);
|
|
6685
|
+
return values.sort((val1, val2) => val1.normalizedValue.localeCompare(val2.normalizedValue, undefined, {
|
|
6686
|
+
numeric: true,
|
|
6687
|
+
sensitivity: "base",
|
|
6688
|
+
}));
|
|
6682
6689
|
}
|
|
6683
6690
|
checkValue(value) {
|
|
6684
6691
|
this.state.selectedValue = value.string;
|
|
@@ -10742,6 +10749,10 @@ const REMOVE_ROWS_ACTION = (env) => {
|
|
|
10742
10749
|
});
|
|
10743
10750
|
};
|
|
10744
10751
|
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
10752
|
+
if ((dimension === "COL" && env.model.getters.getActiveRows().size > 0) ||
|
|
10753
|
+
(dimension === "ROW" && env.model.getters.getActiveCols().size > 0)) {
|
|
10754
|
+
return false;
|
|
10755
|
+
}
|
|
10745
10756
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
10746
10757
|
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
10747
10758
|
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
@@ -21559,11 +21570,11 @@ class OTRegistry extends Registry {
|
|
|
21559
21570
|
* transformation function given
|
|
21560
21571
|
*/
|
|
21561
21572
|
addTransformation(executed, toTransforms, fn) {
|
|
21562
|
-
|
|
21563
|
-
|
|
21564
|
-
|
|
21565
|
-
|
|
21566
|
-
this.content[
|
|
21573
|
+
if (!this.content[executed]) {
|
|
21574
|
+
this.content[executed] = new Map();
|
|
21575
|
+
}
|
|
21576
|
+
for (const toTransform of toTransforms) {
|
|
21577
|
+
this.content[executed].set(toTransform, fn);
|
|
21567
21578
|
}
|
|
21568
21579
|
return this;
|
|
21569
21580
|
}
|
|
@@ -21572,7 +21583,7 @@ class OTRegistry extends Registry {
|
|
|
21572
21583
|
* that the executed command happened.
|
|
21573
21584
|
*/
|
|
21574
21585
|
getTransformation(toTransform, executed) {
|
|
21575
|
-
return this.content[
|
|
21586
|
+
return this.content[executed] && this.content[executed].get(toTransform);
|
|
21576
21587
|
}
|
|
21577
21588
|
}
|
|
21578
21589
|
const otRegistry = new OTRegistry();
|
|
@@ -32825,7 +32836,7 @@ class XlsxBaseExtractor {
|
|
|
32825
32836
|
*/
|
|
32826
32837
|
handleMissingValue(parentElement, missingElementName, optionalArgs) {
|
|
32827
32838
|
if (optionalArgs?.required) {
|
|
32828
|
-
if (optionalArgs?.default) {
|
|
32839
|
+
if (optionalArgs?.default !== undefined) {
|
|
32829
32840
|
this.warningManager.addParsingWarning(`Missing required ${missingElementName} in element <${parentElement.tagName}> of ${this.currentFile}, replacing it by the default value ${optionalArgs.default}`);
|
|
32830
32841
|
}
|
|
32831
32842
|
else {
|
|
@@ -44619,10 +44630,20 @@ function transform(toTransform, executed) {
|
|
|
44619
44630
|
*/
|
|
44620
44631
|
function transformAll(toTransform, executed) {
|
|
44621
44632
|
let transformedCommands = [...toTransform];
|
|
44633
|
+
const possibleTransformations = new Set(otRegistry.getKeys());
|
|
44622
44634
|
for (const executedCommand of executed) {
|
|
44623
|
-
|
|
44624
|
-
|
|
44625
|
-
|
|
44635
|
+
// If the executed command is not in the registry, we skip it
|
|
44636
|
+
// because we know there won't be any transformation impacting the
|
|
44637
|
+
// commands to transform.
|
|
44638
|
+
if (possibleTransformations.has(executedCommand.type)) {
|
|
44639
|
+
transformedCommands = transformedCommands.reduce((acc, cmd) => {
|
|
44640
|
+
const transformed = transform(cmd, executedCommand);
|
|
44641
|
+
if (transformed) {
|
|
44642
|
+
acc.push(transformed);
|
|
44643
|
+
}
|
|
44644
|
+
return acc;
|
|
44645
|
+
}, []);
|
|
44646
|
+
}
|
|
44626
44647
|
}
|
|
44627
44648
|
return transformedCommands;
|
|
44628
44649
|
}
|
|
@@ -45101,7 +45122,6 @@ class Session extends EventBus {
|
|
|
45101
45122
|
if (this.waitingAck) {
|
|
45102
45123
|
return;
|
|
45103
45124
|
}
|
|
45104
|
-
this.waitingAck = true;
|
|
45105
45125
|
this.sendPendingMessage();
|
|
45106
45126
|
}
|
|
45107
45127
|
/**
|
|
@@ -45131,6 +45151,7 @@ class Session extends EventBus {
|
|
|
45131
45151
|
throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.
|
|
45132
45152
|
${JSON.stringify(message)}`);
|
|
45133
45153
|
}
|
|
45154
|
+
this.waitingAck = true;
|
|
45134
45155
|
this.transportService.sendMessage({
|
|
45135
45156
|
...message,
|
|
45136
45157
|
serverRevisionId: this.serverRevisionId,
|
|
@@ -48177,7 +48198,7 @@ class SheetUIPlugin extends UIPlugin {
|
|
|
48177
48198
|
}
|
|
48178
48199
|
const position = this.getters.getCellPosition(cell.id);
|
|
48179
48200
|
const colSize = this.getters.getColSize(sheetId, position.col);
|
|
48180
|
-
if (cell.isFormula) {
|
|
48201
|
+
if (cell.isFormula || this.getters.getArrayFormulaSpreadingOn(position)) {
|
|
48181
48202
|
const content = this.getters.getEvaluatedCell(position).formattedValue;
|
|
48182
48203
|
const evaluatedSize = getCellContentHeight(this.ctx, content, cell?.style, colSize);
|
|
48183
48204
|
if (evaluatedSize > evaluatedRowSize && evaluatedSize > DEFAULT_CELL_HEIGHT) {
|
|
@@ -50171,9 +50192,10 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
50171
50192
|
const filteredValues = this.filterValues[sheetId]?.[filter.id]?.map(toLowerCase);
|
|
50172
50193
|
if (!filteredValues || !filter.filteredZone)
|
|
50173
50194
|
continue;
|
|
50195
|
+
const filteredValuesSet = new Set(filteredValues);
|
|
50174
50196
|
for (let row = filter.filteredZone.top; row <= filter.filteredZone.bottom; row++) {
|
|
50175
50197
|
const value = this.getCellValueAsString(sheetId, filter.col, row);
|
|
50176
|
-
if (
|
|
50198
|
+
if (filteredValuesSet.has(value)) {
|
|
50177
50199
|
hiddenRows.add(row);
|
|
50178
50200
|
}
|
|
50179
50201
|
}
|
|
@@ -58291,6 +58313,6 @@ const constants = {
|
|
|
58291
58313
|
export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
|
|
58292
58314
|
|
|
58293
58315
|
|
|
58294
|
-
__info__.version = "17.0.
|
|
58295
|
-
__info__.date = "2025-06-
|
|
58296
|
-
__info__.hash = "
|
|
58316
|
+
__info__.version = "17.0.66";
|
|
58317
|
+
__info__.date = "2025-06-19T18:23:36.231Z";
|
|
58318
|
+
__info__.hash = "fbd5c00";
|
|
@@ -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.0.
|
|
6
|
-
* @date 2025-06-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.0.66
|
|
6
|
+
* @date 2025-06-19T18:23:36.231Z
|
|
7
|
+
* @hash fbd5c00
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -6667,19 +6667,26 @@
|
|
|
6667
6667
|
.filter(({ row }) => !this.env.model.getters.isRowHidden(sheetId, row))
|
|
6668
6668
|
.map(({ col, row }) => this.env.model.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue);
|
|
6669
6669
|
const filterValues = this.env.model.getters.getFilterValues({ sheetId, ...position });
|
|
6670
|
-
const
|
|
6671
|
-
const
|
|
6672
|
-
|
|
6673
|
-
const
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6682
|
-
|
|
6670
|
+
const normalizedFilteredValues = new Set(filterValues.map(toLowerCase));
|
|
6671
|
+
const set = new Set();
|
|
6672
|
+
const values = [];
|
|
6673
|
+
const addValue = (value) => {
|
|
6674
|
+
const normalizedValue = toLowerCase(value);
|
|
6675
|
+
if (!set.has(normalizedValue)) {
|
|
6676
|
+
values.push({
|
|
6677
|
+
string: value || "",
|
|
6678
|
+
checked: !normalizedFilteredValues.has(normalizedValue),
|
|
6679
|
+
normalizedValue,
|
|
6680
|
+
});
|
|
6681
|
+
set.add(normalizedValue);
|
|
6682
|
+
}
|
|
6683
|
+
};
|
|
6684
|
+
cellValues.forEach(addValue);
|
|
6685
|
+
filterValues.forEach(addValue);
|
|
6686
|
+
return values.sort((val1, val2) => val1.normalizedValue.localeCompare(val2.normalizedValue, undefined, {
|
|
6687
|
+
numeric: true,
|
|
6688
|
+
sensitivity: "base",
|
|
6689
|
+
}));
|
|
6683
6690
|
}
|
|
6684
6691
|
checkValue(value) {
|
|
6685
6692
|
this.state.selectedValue = value.string;
|
|
@@ -10743,6 +10750,10 @@
|
|
|
10743
10750
|
});
|
|
10744
10751
|
};
|
|
10745
10752
|
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
10753
|
+
if ((dimension === "COL" && env.model.getters.getActiveRows().size > 0) ||
|
|
10754
|
+
(dimension === "ROW" && env.model.getters.getActiveCols().size > 0)) {
|
|
10755
|
+
return false;
|
|
10756
|
+
}
|
|
10746
10757
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
10747
10758
|
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
10748
10759
|
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
@@ -21560,11 +21571,11 @@
|
|
|
21560
21571
|
* transformation function given
|
|
21561
21572
|
*/
|
|
21562
21573
|
addTransformation(executed, toTransforms, fn) {
|
|
21563
|
-
|
|
21564
|
-
|
|
21565
|
-
|
|
21566
|
-
|
|
21567
|
-
this.content[
|
|
21574
|
+
if (!this.content[executed]) {
|
|
21575
|
+
this.content[executed] = new Map();
|
|
21576
|
+
}
|
|
21577
|
+
for (const toTransform of toTransforms) {
|
|
21578
|
+
this.content[executed].set(toTransform, fn);
|
|
21568
21579
|
}
|
|
21569
21580
|
return this;
|
|
21570
21581
|
}
|
|
@@ -21573,7 +21584,7 @@
|
|
|
21573
21584
|
* that the executed command happened.
|
|
21574
21585
|
*/
|
|
21575
21586
|
getTransformation(toTransform, executed) {
|
|
21576
|
-
return this.content[
|
|
21587
|
+
return this.content[executed] && this.content[executed].get(toTransform);
|
|
21577
21588
|
}
|
|
21578
21589
|
}
|
|
21579
21590
|
const otRegistry = new OTRegistry();
|
|
@@ -32826,7 +32837,7 @@
|
|
|
32826
32837
|
*/
|
|
32827
32838
|
handleMissingValue(parentElement, missingElementName, optionalArgs) {
|
|
32828
32839
|
if (optionalArgs?.required) {
|
|
32829
|
-
if (optionalArgs?.default) {
|
|
32840
|
+
if (optionalArgs?.default !== undefined) {
|
|
32830
32841
|
this.warningManager.addParsingWarning(`Missing required ${missingElementName} in element <${parentElement.tagName}> of ${this.currentFile}, replacing it by the default value ${optionalArgs.default}`);
|
|
32831
32842
|
}
|
|
32832
32843
|
else {
|
|
@@ -44620,10 +44631,20 @@
|
|
|
44620
44631
|
*/
|
|
44621
44632
|
function transformAll(toTransform, executed) {
|
|
44622
44633
|
let transformedCommands = [...toTransform];
|
|
44634
|
+
const possibleTransformations = new Set(otRegistry.getKeys());
|
|
44623
44635
|
for (const executedCommand of executed) {
|
|
44624
|
-
|
|
44625
|
-
|
|
44626
|
-
|
|
44636
|
+
// If the executed command is not in the registry, we skip it
|
|
44637
|
+
// because we know there won't be any transformation impacting the
|
|
44638
|
+
// commands to transform.
|
|
44639
|
+
if (possibleTransformations.has(executedCommand.type)) {
|
|
44640
|
+
transformedCommands = transformedCommands.reduce((acc, cmd) => {
|
|
44641
|
+
const transformed = transform(cmd, executedCommand);
|
|
44642
|
+
if (transformed) {
|
|
44643
|
+
acc.push(transformed);
|
|
44644
|
+
}
|
|
44645
|
+
return acc;
|
|
44646
|
+
}, []);
|
|
44647
|
+
}
|
|
44627
44648
|
}
|
|
44628
44649
|
return transformedCommands;
|
|
44629
44650
|
}
|
|
@@ -45102,7 +45123,6 @@
|
|
|
45102
45123
|
if (this.waitingAck) {
|
|
45103
45124
|
return;
|
|
45104
45125
|
}
|
|
45105
|
-
this.waitingAck = true;
|
|
45106
45126
|
this.sendPendingMessage();
|
|
45107
45127
|
}
|
|
45108
45128
|
/**
|
|
@@ -45132,6 +45152,7 @@
|
|
|
45132
45152
|
throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.
|
|
45133
45153
|
${JSON.stringify(message)}`);
|
|
45134
45154
|
}
|
|
45155
|
+
this.waitingAck = true;
|
|
45135
45156
|
this.transportService.sendMessage({
|
|
45136
45157
|
...message,
|
|
45137
45158
|
serverRevisionId: this.serverRevisionId,
|
|
@@ -48178,7 +48199,7 @@
|
|
|
48178
48199
|
}
|
|
48179
48200
|
const position = this.getters.getCellPosition(cell.id);
|
|
48180
48201
|
const colSize = this.getters.getColSize(sheetId, position.col);
|
|
48181
|
-
if (cell.isFormula) {
|
|
48202
|
+
if (cell.isFormula || this.getters.getArrayFormulaSpreadingOn(position)) {
|
|
48182
48203
|
const content = this.getters.getEvaluatedCell(position).formattedValue;
|
|
48183
48204
|
const evaluatedSize = getCellContentHeight(this.ctx, content, cell?.style, colSize);
|
|
48184
48205
|
if (evaluatedSize > evaluatedRowSize && evaluatedSize > DEFAULT_CELL_HEIGHT) {
|
|
@@ -50172,9 +50193,10 @@
|
|
|
50172
50193
|
const filteredValues = this.filterValues[sheetId]?.[filter.id]?.map(toLowerCase);
|
|
50173
50194
|
if (!filteredValues || !filter.filteredZone)
|
|
50174
50195
|
continue;
|
|
50196
|
+
const filteredValuesSet = new Set(filteredValues);
|
|
50175
50197
|
for (let row = filter.filteredZone.top; row <= filter.filteredZone.bottom; row++) {
|
|
50176
50198
|
const value = this.getCellValueAsString(sheetId, filter.col, row);
|
|
50177
|
-
if (
|
|
50199
|
+
if (filteredValuesSet.has(value)) {
|
|
50178
50200
|
hiddenRows.add(row);
|
|
50179
50201
|
}
|
|
50180
50202
|
}
|
|
@@ -58327,9 +58349,9 @@
|
|
|
58327
58349
|
exports.tokenize = tokenize;
|
|
58328
58350
|
|
|
58329
58351
|
|
|
58330
|
-
__info__.version = "17.0.
|
|
58331
|
-
__info__.date = "2025-06-
|
|
58332
|
-
__info__.hash = "
|
|
58352
|
+
__info__.version = "17.0.66";
|
|
58353
|
+
__info__.date = "2025-06-19T18:23:36.231Z";
|
|
58354
|
+
__info__.hash = "fbd5c00";
|
|
58333
58355
|
|
|
58334
58356
|
|
|
58335
58357
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|