@odoo/o-spreadsheet 16.2.13 → 16.2.16
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 +112 -62
- package/dist/o-spreadsheet.d.ts +13 -5
- package/dist/o-spreadsheet.esm.js +112 -62
- package/dist/o-spreadsheet.iife.js +112 -62
- package/dist/o-spreadsheet.iife.min.js +244 -243
- package/package.json +1 -1
|
@@ -987,13 +987,17 @@ function getAddHeaderStartIndex(position, base) {
|
|
|
987
987
|
return position === "after" ? base + 1 : base;
|
|
988
988
|
}
|
|
989
989
|
/**
|
|
990
|
-
*
|
|
990
|
+
* Compares two objects.
|
|
991
991
|
*/
|
|
992
992
|
function deepEquals(o1, o2) {
|
|
993
993
|
if (o1 === o2)
|
|
994
994
|
return true;
|
|
995
995
|
if ((o1 && !o2) || (o2 && !o1))
|
|
996
996
|
return false;
|
|
997
|
+
if (typeof o1 !== typeof o2)
|
|
998
|
+
return false;
|
|
999
|
+
if (typeof o1 !== "object")
|
|
1000
|
+
return o1 === o2;
|
|
997
1001
|
// Objects can have different keys if the values are undefined
|
|
998
1002
|
const keys = new Set();
|
|
999
1003
|
Object.keys(o1).forEach((key) => keys.add(key));
|
|
@@ -4679,6 +4683,7 @@ css /* scss */ `
|
|
|
4679
4683
|
padding: 10px;
|
|
4680
4684
|
width: ${ERROR_TOOLTIP_WIDTH}px;
|
|
4681
4685
|
box-sizing: border-box !important;
|
|
4686
|
+
overflow-wrap: break-word;
|
|
4682
4687
|
}
|
|
4683
4688
|
`;
|
|
4684
4689
|
class ErrorToolTip extends Component {
|
|
@@ -7241,6 +7246,7 @@ class LineChart extends AbstractChart {
|
|
|
7241
7246
|
this.labelsAsText = definition.labelsAsText;
|
|
7242
7247
|
this.stacked = definition.stacked;
|
|
7243
7248
|
this.aggregated = definition.aggregated;
|
|
7249
|
+
this.cumulative = definition.cumulative;
|
|
7244
7250
|
}
|
|
7245
7251
|
static validateChartDefinition(validator, definition) {
|
|
7246
7252
|
return validator.checkValidations(definition, checkDataset, checkLabelRange);
|
|
@@ -7261,6 +7267,7 @@ class LineChart extends AbstractChart {
|
|
|
7261
7267
|
labelRange: context.auxiliaryRange || undefined,
|
|
7262
7268
|
stacked: false,
|
|
7263
7269
|
aggregated: false,
|
|
7270
|
+
cumulative: false,
|
|
7264
7271
|
};
|
|
7265
7272
|
}
|
|
7266
7273
|
getDefinition() {
|
|
@@ -7281,6 +7288,7 @@ class LineChart extends AbstractChart {
|
|
|
7281
7288
|
labelsAsText: this.labelsAsText,
|
|
7282
7289
|
stacked: this.stacked,
|
|
7283
7290
|
aggregated: this.aggregated,
|
|
7291
|
+
cumulative: this.cumulative,
|
|
7284
7292
|
};
|
|
7285
7293
|
}
|
|
7286
7294
|
getContextCreation() {
|
|
@@ -7484,6 +7492,16 @@ function createLineChartRuntime(chart, getters) {
|
|
|
7484
7492
|
if (chart.stacked) {
|
|
7485
7493
|
backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
|
|
7486
7494
|
}
|
|
7495
|
+
if (chart.cumulative) {
|
|
7496
|
+
let accumulator = 0;
|
|
7497
|
+
data = data.map((value) => {
|
|
7498
|
+
if (!isNaN(value)) {
|
|
7499
|
+
accumulator += parseFloat(value);
|
|
7500
|
+
return accumulator;
|
|
7501
|
+
}
|
|
7502
|
+
return value;
|
|
7503
|
+
});
|
|
7504
|
+
}
|
|
7487
7505
|
const backgroundColor = rgbaToHex(backgroundRGBA);
|
|
7488
7506
|
const dataset = {
|
|
7489
7507
|
label,
|
|
@@ -8266,6 +8284,7 @@ function getSmartChartDefinition(zone, getters) {
|
|
|
8266
8284
|
labelsAsText: false,
|
|
8267
8285
|
stacked: false,
|
|
8268
8286
|
aggregated: false,
|
|
8287
|
+
cumulative: false,
|
|
8269
8288
|
labelRange: labelRangeXc,
|
|
8270
8289
|
type: "line",
|
|
8271
8290
|
dataSetsHaveTitle,
|
|
@@ -8628,6 +8647,13 @@ const REMOVE_ROWS_ACTION = (env) => {
|
|
|
8628
8647
|
elements: rows,
|
|
8629
8648
|
});
|
|
8630
8649
|
};
|
|
8650
|
+
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
8651
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
8652
|
+
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
8653
|
+
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
8654
|
+
const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
|
|
8655
|
+
return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
|
|
8656
|
+
};
|
|
8631
8657
|
const REMOVE_COLUMNS_NAME = (env) => {
|
|
8632
8658
|
if (env.model.getters.getSelectedZones().length > 1) {
|
|
8633
8659
|
return _lt("Delete columns");
|
|
@@ -9218,11 +9244,7 @@ colMenuRegistry
|
|
|
9218
9244
|
name: REMOVE_COLUMNS_NAME,
|
|
9219
9245
|
sequence: 90,
|
|
9220
9246
|
action: REMOVE_COLUMNS_ACTION,
|
|
9221
|
-
isVisible: (env) =>
|
|
9222
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9223
|
-
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
9224
|
-
return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
|
|
9225
|
-
},
|
|
9247
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
9226
9248
|
})
|
|
9227
9249
|
.add("clear_column", {
|
|
9228
9250
|
name: DELETE_CONTENT_COLUMNS_NAME,
|
|
@@ -9236,7 +9258,7 @@ colMenuRegistry
|
|
|
9236
9258
|
isVisible: (env) => {
|
|
9237
9259
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
9238
9260
|
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
9239
|
-
return env.model.getters.
|
|
9261
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
|
|
9240
9262
|
},
|
|
9241
9263
|
separator: true,
|
|
9242
9264
|
})
|
|
@@ -9310,11 +9332,7 @@ rowMenuRegistry
|
|
|
9310
9332
|
name: REMOVE_ROWS_NAME,
|
|
9311
9333
|
sequence: 70,
|
|
9312
9334
|
action: REMOVE_ROWS_ACTION,
|
|
9313
|
-
isVisible: (env) =>
|
|
9314
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9315
|
-
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
9316
|
-
return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
|
|
9317
|
-
},
|
|
9335
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
9318
9336
|
})
|
|
9319
9337
|
.add("clear_row", {
|
|
9320
9338
|
name: DELETE_CONTENT_ROWS_NAME,
|
|
@@ -9328,7 +9346,7 @@ rowMenuRegistry
|
|
|
9328
9346
|
isVisible: (env) => {
|
|
9329
9347
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
9330
9348
|
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
9331
|
-
return env.model.getters.
|
|
9349
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
|
|
9332
9350
|
},
|
|
9333
9351
|
separator: true,
|
|
9334
9352
|
})
|
|
@@ -16174,11 +16192,13 @@ topbarMenuRegistry
|
|
|
16174
16192
|
name: REMOVE_ROWS_NAME,
|
|
16175
16193
|
sequence: 80,
|
|
16176
16194
|
action: REMOVE_ROWS_ACTION,
|
|
16195
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
16177
16196
|
})
|
|
16178
16197
|
.addChild("edit_delete_column", ["edit"], {
|
|
16179
16198
|
name: REMOVE_COLUMNS_NAME,
|
|
16180
16199
|
sequence: 90,
|
|
16181
16200
|
action: REMOVE_COLUMNS_ACTION,
|
|
16201
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
16182
16202
|
})
|
|
16183
16203
|
.addChild("edit_delete_cell_shift_up", ["edit"], {
|
|
16184
16204
|
name: _lt("Delete cell and shift up"),
|
|
@@ -17491,6 +17511,11 @@ class LineConfigPanel extends LineBarPieConfigPanel {
|
|
|
17491
17511
|
aggregated: ev.target.checked,
|
|
17492
17512
|
});
|
|
17493
17513
|
}
|
|
17514
|
+
onUpdateCumulative(ev) {
|
|
17515
|
+
this.props.updateChart(this.props.figureId, {
|
|
17516
|
+
cumulative: ev.target.checked,
|
|
17517
|
+
});
|
|
17518
|
+
}
|
|
17494
17519
|
}
|
|
17495
17520
|
LineConfigPanel.template = "o-spreadsheet-LineConfigPanel";
|
|
17496
17521
|
|
|
@@ -19030,34 +19055,25 @@ FigureComponent.props = {
|
|
|
19030
19055
|
};
|
|
19031
19056
|
|
|
19032
19057
|
function startDnd(onMouseMove, onMouseUp, onMouseDown = () => { }) {
|
|
19033
|
-
const _onMouseDown = (ev) => {
|
|
19034
|
-
ev.preventDefault();
|
|
19035
|
-
onMouseDown(ev);
|
|
19036
|
-
};
|
|
19037
|
-
const _onMouseMove = (ev) => {
|
|
19038
|
-
ev.preventDefault();
|
|
19039
|
-
onMouseMove(ev);
|
|
19040
|
-
};
|
|
19041
19058
|
const _onMouseUp = (ev) => {
|
|
19042
|
-
ev.preventDefault();
|
|
19043
19059
|
onMouseUp(ev);
|
|
19044
|
-
window.removeEventListener("mousedown",
|
|
19060
|
+
window.removeEventListener("mousedown", onMouseDown);
|
|
19045
19061
|
window.removeEventListener("mouseup", _onMouseUp);
|
|
19046
19062
|
window.removeEventListener("dragstart", _onDragStart);
|
|
19047
|
-
window.removeEventListener("mousemove",
|
|
19048
|
-
window.removeEventListener("wheel",
|
|
19063
|
+
window.removeEventListener("mousemove", onMouseMove);
|
|
19064
|
+
window.removeEventListener("wheel", onMouseMove);
|
|
19049
19065
|
};
|
|
19050
19066
|
function _onDragStart(ev) {
|
|
19051
19067
|
ev.preventDefault();
|
|
19052
19068
|
}
|
|
19053
|
-
window.addEventListener("mousedown",
|
|
19069
|
+
window.addEventListener("mousedown", onMouseDown);
|
|
19054
19070
|
window.addEventListener("mouseup", _onMouseUp);
|
|
19055
19071
|
window.addEventListener("dragstart", _onDragStart);
|
|
19056
|
-
window.addEventListener("mousemove",
|
|
19072
|
+
window.addEventListener("mousemove", onMouseMove);
|
|
19057
19073
|
// mouse wheel on window is by default a passive event.
|
|
19058
19074
|
// preventDefault() is not allowed in passive event handler.
|
|
19059
19075
|
// https://chromestatus.com/feature/6662647093133312
|
|
19060
|
-
window.addEventListener("wheel",
|
|
19076
|
+
window.addEventListener("wheel", onMouseMove, { passive: false });
|
|
19061
19077
|
}
|
|
19062
19078
|
/**
|
|
19063
19079
|
* Function to be used during a mousedown event, this function allows to
|
|
@@ -20859,9 +20875,11 @@ function useCellHovered(env, gridRef, callback) {
|
|
|
20859
20875
|
}
|
|
20860
20876
|
}
|
|
20861
20877
|
function updateMousePosition(e) {
|
|
20862
|
-
|
|
20863
|
-
|
|
20864
|
-
|
|
20878
|
+
if (gridRef.el === e.target) {
|
|
20879
|
+
x = e.offsetX;
|
|
20880
|
+
y = e.offsetY;
|
|
20881
|
+
lastMoved = Date.now();
|
|
20882
|
+
}
|
|
20865
20883
|
}
|
|
20866
20884
|
function recompute() {
|
|
20867
20885
|
const { col, row } = getPosition();
|
|
@@ -22302,7 +22320,8 @@ class Grid extends Component {
|
|
|
22302
22320
|
}
|
|
22303
22321
|
let prevCol = col;
|
|
22304
22322
|
let prevRow = row;
|
|
22305
|
-
const onMouseMove = (col, row) => {
|
|
22323
|
+
const onMouseMove = (col, row, ev) => {
|
|
22324
|
+
ev.preventDefault();
|
|
22306
22325
|
if ((col !== prevCol && col != -1) || (row !== prevRow && row != -1)) {
|
|
22307
22326
|
prevCol = col === -1 ? prevCol : col;
|
|
22308
22327
|
prevRow = row === -1 ? prevRow : row;
|
|
@@ -24973,6 +24992,7 @@ function convertChartData(chartData) {
|
|
|
24973
24992
|
legendPosition: chartData.legendPosition,
|
|
24974
24993
|
stacked: chartData.stacked || false,
|
|
24975
24994
|
aggregated: false,
|
|
24995
|
+
cumulative: chartData.cumulative || false,
|
|
24976
24996
|
labelsAsText: false,
|
|
24977
24997
|
};
|
|
24978
24998
|
}
|
|
@@ -29627,7 +29647,7 @@ class HeaderVisibilityPlugin extends CorePlugin {
|
|
|
29627
29647
|
if (!this.getters.tryGetSheet(cmd.sheetId)) {
|
|
29628
29648
|
return 27 /* CommandResult.InvalidSheetId */;
|
|
29629
29649
|
}
|
|
29630
|
-
if (
|
|
29650
|
+
if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
29631
29651
|
return 8 /* CommandResult.NotEnoughElements */;
|
|
29632
29652
|
}
|
|
29633
29653
|
return 0 /* CommandResult.Success */;
|
|
@@ -29677,9 +29697,9 @@ class HeaderVisibilityPlugin extends CorePlugin {
|
|
|
29677
29697
|
}
|
|
29678
29698
|
return;
|
|
29679
29699
|
}
|
|
29680
|
-
|
|
29700
|
+
checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
|
|
29681
29701
|
const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
|
|
29682
|
-
return
|
|
29702
|
+
return includesAll(elements, visibleHeaders);
|
|
29683
29703
|
}
|
|
29684
29704
|
isRowHiddenByUser(sheetId, index) {
|
|
29685
29705
|
return this.hiddenHeaders[sheetId].ROW[index];
|
|
@@ -29775,7 +29795,7 @@ class HeaderVisibilityPlugin extends CorePlugin {
|
|
|
29775
29795
|
}
|
|
29776
29796
|
}
|
|
29777
29797
|
HeaderVisibilityPlugin.getters = [
|
|
29778
|
-
"
|
|
29798
|
+
"checkElementsIncludeAllVisibleHeaders",
|
|
29779
29799
|
"getHiddenColsGroups",
|
|
29780
29800
|
"getHiddenRowsGroups",
|
|
29781
29801
|
"isRowHiddenByUser",
|
|
@@ -30812,6 +30832,9 @@ class SheetPlugin extends CorePlugin {
|
|
|
30812
30832
|
if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
|
|
30813
30833
|
return 86 /* CommandResult.InvalidHeaderIndex */;
|
|
30814
30834
|
}
|
|
30835
|
+
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
30836
|
+
return 8 /* CommandResult.NotEnoughElements */;
|
|
30837
|
+
}
|
|
30815
30838
|
else {
|
|
30816
30839
|
return 0 /* CommandResult.Success */;
|
|
30817
30840
|
}
|
|
@@ -31098,6 +31121,20 @@ class SheetPlugin extends CorePlugin {
|
|
|
31098
31121
|
}
|
|
31099
31122
|
this.history.update("sheets", sheetId, "panes", panes);
|
|
31100
31123
|
}
|
|
31124
|
+
/**
|
|
31125
|
+
* Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
|
|
31126
|
+
* This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
|
|
31127
|
+
*/
|
|
31128
|
+
checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
|
|
31129
|
+
const paneDivisions = this.getters.getPaneDivisions(sheetId);
|
|
31130
|
+
const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
|
|
31131
|
+
const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
|
|
31132
|
+
if (!startIndex) {
|
|
31133
|
+
return false;
|
|
31134
|
+
}
|
|
31135
|
+
const indicesToCheck = range(startIndex, endIndex);
|
|
31136
|
+
return includesAll(elements, indicesToCheck);
|
|
31137
|
+
}
|
|
31101
31138
|
// ---------------------------------------------------------------------------
|
|
31102
31139
|
// Row/Col manipulation
|
|
31103
31140
|
// ---------------------------------------------------------------------------
|
|
@@ -31626,6 +31663,7 @@ SheetPlugin.getters = [
|
|
|
31626
31663
|
"getSheetSize",
|
|
31627
31664
|
"getSheetZone",
|
|
31628
31665
|
"getPaneDivisions",
|
|
31666
|
+
"checkElementsIncludeAllNonFrozenHeaders",
|
|
31629
31667
|
];
|
|
31630
31668
|
|
|
31631
31669
|
/**
|
|
@@ -32192,6 +32230,7 @@ class EvaluationConditionalFormatPlugin extends UIPlugin {
|
|
|
32192
32230
|
// stores the computed styles in the format of computedStyles.sheetName[col][row] = Style
|
|
32193
32231
|
this.computedStyles = {};
|
|
32194
32232
|
this.computedIcons = {};
|
|
32233
|
+
this.uuidGenerator = new UuidGenerator();
|
|
32195
32234
|
/**
|
|
32196
32235
|
* Execute the predicate to know if a conditional formatting rule should be applied to a cell
|
|
32197
32236
|
*/
|
|
@@ -32544,13 +32583,20 @@ class EvaluationConditionalFormatPlugin extends UIPlugin {
|
|
|
32544
32583
|
this.adaptRules(origin.sheetId, cf, [xc], toRemoveRange);
|
|
32545
32584
|
}
|
|
32546
32585
|
else {
|
|
32547
|
-
this.adaptRules(target.sheetId, cf, [xc], []);
|
|
32548
32586
|
this.adaptRules(origin.sheetId, cf, [], toRemoveRange);
|
|
32587
|
+
const cfToCopyTo = this.getCFToCopyTo(target.sheetId, cf);
|
|
32588
|
+
this.adaptRules(target.sheetId, cfToCopyTo, [xc], []);
|
|
32549
32589
|
}
|
|
32550
32590
|
}
|
|
32551
32591
|
}
|
|
32552
32592
|
}
|
|
32553
32593
|
}
|
|
32594
|
+
getCFToCopyTo(targetSheetId, originCF) {
|
|
32595
|
+
const cfInTarget = this.getters
|
|
32596
|
+
.getConditionalFormats(targetSheetId)
|
|
32597
|
+
.find((cf) => cf.stopIfTrue === originCF.stopIfTrue && deepEquals(cf.rule, originCF.rule));
|
|
32598
|
+
return cfInTarget ? cfInTarget : { ...originCF, id: this.uuidGenerator.uuidv4(), ranges: [] };
|
|
32599
|
+
}
|
|
32554
32600
|
}
|
|
32555
32601
|
EvaluationConditionalFormatPlugin.getters = ["getConditionalIcon", "getCellComputedStyle"];
|
|
32556
32602
|
|
|
@@ -33072,6 +33118,9 @@ class InternalViewport {
|
|
|
33072
33118
|
const sheetId = this.sheetId;
|
|
33073
33119
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
33074
33120
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
33121
|
+
if (this.left === -1) {
|
|
33122
|
+
this.left = this.boundaries.left;
|
|
33123
|
+
}
|
|
33075
33124
|
if (this.right === -1) {
|
|
33076
33125
|
this.right = this.getters.getNumberCols(sheetId) - 1;
|
|
33077
33126
|
}
|
|
@@ -33085,6 +33134,9 @@ class InternalViewport {
|
|
|
33085
33134
|
const sheetId = this.sheetId;
|
|
33086
33135
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
33087
33136
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
33137
|
+
if (this.top === -1) {
|
|
33138
|
+
this.top = this.boundaries.top;
|
|
33139
|
+
}
|
|
33088
33140
|
if (this.bottom === -1) {
|
|
33089
33141
|
this.bottom = this.getters.getNumberRows(sheetId) - 1;
|
|
33090
33142
|
}
|
|
@@ -38006,7 +38058,7 @@ class ClipboardPlugin extends UIPlugin {
|
|
|
38006
38058
|
allowDispatch(cmd) {
|
|
38007
38059
|
switch (cmd.type) {
|
|
38008
38060
|
case "CUT":
|
|
38009
|
-
const zones =
|
|
38061
|
+
const zones = this.getters.getSelectedZones();
|
|
38010
38062
|
const state = this.getClipboardState(zones, cmd.type);
|
|
38011
38063
|
return state.isCutAllowed(zones);
|
|
38012
38064
|
case "PASTE":
|
|
@@ -38037,7 +38089,7 @@ class ClipboardPlugin extends UIPlugin {
|
|
|
38037
38089
|
switch (cmd.type) {
|
|
38038
38090
|
case "COPY":
|
|
38039
38091
|
case "CUT":
|
|
38040
|
-
const zones =
|
|
38092
|
+
const zones = this.getters.getSelectedZones();
|
|
38041
38093
|
this.state = this.getClipboardState(zones, cmd.type);
|
|
38042
38094
|
this.status = "visible";
|
|
38043
38095
|
break;
|
|
@@ -39417,26 +39469,24 @@ class GridSelectionPlugin extends UIPlugin {
|
|
|
39417
39469
|
const isBasedBefore = cmd.base < start;
|
|
39418
39470
|
const deltaCol = isBasedBefore && isCol ? thickness : 0;
|
|
39419
39471
|
const deltaRow = isBasedBefore && !isCol ? thickness : 0;
|
|
39420
|
-
|
|
39421
|
-
|
|
39422
|
-
|
|
39423
|
-
|
|
39424
|
-
|
|
39425
|
-
|
|
39426
|
-
|
|
39427
|
-
|
|
39428
|
-
|
|
39429
|
-
|
|
39430
|
-
|
|
39431
|
-
|
|
39432
|
-
|
|
39433
|
-
|
|
39434
|
-
|
|
39435
|
-
|
|
39436
|
-
|
|
39437
|
-
|
|
39438
|
-
],
|
|
39439
|
-
});
|
|
39472
|
+
const target = [
|
|
39473
|
+
{
|
|
39474
|
+
left: isCol ? start + deltaCol : 0,
|
|
39475
|
+
right: isCol ? end + deltaCol : this.getters.getNumberCols(cmd.sheetId) - 1,
|
|
39476
|
+
top: !isCol ? start + deltaRow : 0,
|
|
39477
|
+
bottom: !isCol ? end + deltaRow : this.getters.getNumberRows(cmd.sheetId) - 1,
|
|
39478
|
+
},
|
|
39479
|
+
];
|
|
39480
|
+
const state = new ClipboardCellsState(target, "CUT", this.getters, this.dispatch, this.selection);
|
|
39481
|
+
const pasteTarget = [
|
|
39482
|
+
{
|
|
39483
|
+
left: isCol ? cmd.base : 0,
|
|
39484
|
+
right: isCol ? cmd.base + thickness - 1 : this.getters.getNumberCols(cmd.sheetId) - 1,
|
|
39485
|
+
top: !isCol ? cmd.base : 0,
|
|
39486
|
+
bottom: !isCol ? cmd.base + thickness - 1 : this.getters.getNumberRows(cmd.sheetId) - 1,
|
|
39487
|
+
},
|
|
39488
|
+
];
|
|
39489
|
+
state.paste(pasteTarget, { selectTarget: true });
|
|
39440
39490
|
const toRemove = isBasedBefore ? cmd.elements.map((el) => el + thickness) : cmd.elements;
|
|
39441
39491
|
let currentIndex = cmd.base;
|
|
39442
39492
|
for (const element of toRemove) {
|
|
@@ -45376,6 +45426,6 @@ function addFunction(functionName, functionDescription) {
|
|
|
45376
45426
|
export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, links, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
|
|
45377
45427
|
|
|
45378
45428
|
|
|
45379
|
-
__info__.version = '16.2.
|
|
45380
|
-
__info__.date = '2023-
|
|
45381
|
-
__info__.hash = '
|
|
45429
|
+
__info__.version = '16.2.16';
|
|
45430
|
+
__info__.date = '2023-09-21T15:56:53.639Z';
|
|
45431
|
+
__info__.hash = '1a70819';
|