@odoo/o-spreadsheet 16.4.28 → 16.4.30
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 +321 -344
- package/dist/o-spreadsheet.d.ts +6 -6
- package/dist/o-spreadsheet.esm.js +321 -344
- package/dist/o-spreadsheet.iife.js +321 -344
- package/dist/o-spreadsheet.iife.min.js +238 -238
- package/dist/o_spreadsheet.xml +6 -5
- package/package.json +1 -1
|
@@ -613,7 +613,7 @@ function deepEquals(o1, o2) {
|
|
|
613
613
|
if (typeof o1 !== typeof o2)
|
|
614
614
|
return false;
|
|
615
615
|
if (typeof o1 !== "object")
|
|
616
|
-
return
|
|
616
|
+
return false;
|
|
617
617
|
// Objects can have different keys if the values are undefined
|
|
618
618
|
const keys = new Set();
|
|
619
619
|
Object.keys(o1).forEach((key) => keys.add(key));
|
|
@@ -15797,6 +15797,7 @@ class LinkEditor extends Component {
|
|
|
15797
15797
|
this.save();
|
|
15798
15798
|
}
|
|
15799
15799
|
ev.stopPropagation();
|
|
15800
|
+
ev.preventDefault();
|
|
15800
15801
|
break;
|
|
15801
15802
|
case "Escape":
|
|
15802
15803
|
this.cancel();
|
|
@@ -19336,6 +19337,243 @@ function interactiveAddFilter(env, sheetId, target) {
|
|
|
19336
19337
|
}
|
|
19337
19338
|
}
|
|
19338
19339
|
|
|
19340
|
+
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
19341
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19342
|
+
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
19343
|
+
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
19344
|
+
if (result.isCancelledBecause(68 /* CommandResult.MergeOverlap */)) {
|
|
19345
|
+
env.raiseError(MergeErrorMessage);
|
|
19346
|
+
}
|
|
19347
|
+
}
|
|
19348
|
+
|
|
19349
|
+
const hideCols = {
|
|
19350
|
+
name: HIDE_COLUMNS_NAME,
|
|
19351
|
+
execute: (env) => {
|
|
19352
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19353
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19354
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19355
|
+
dimension: "COL",
|
|
19356
|
+
elements: columns,
|
|
19357
|
+
});
|
|
19358
|
+
},
|
|
19359
|
+
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
19360
|
+
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
19361
|
+
};
|
|
19362
|
+
const unhideCols = {
|
|
19363
|
+
name: _lt("Unhide columns"),
|
|
19364
|
+
execute: (env) => {
|
|
19365
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19366
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19367
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19368
|
+
dimension: "COL",
|
|
19369
|
+
elements: columns,
|
|
19370
|
+
});
|
|
19371
|
+
},
|
|
19372
|
+
isVisible: (env) => {
|
|
19373
|
+
const hiddenCols = env.model.getters
|
|
19374
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
19375
|
+
.flat();
|
|
19376
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
19377
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
19378
|
+
},
|
|
19379
|
+
};
|
|
19380
|
+
const unhideAllCols = {
|
|
19381
|
+
name: _lt("Unhide all columns"),
|
|
19382
|
+
execute: (env) => {
|
|
19383
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19384
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19385
|
+
sheetId,
|
|
19386
|
+
dimension: "COL",
|
|
19387
|
+
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
19388
|
+
});
|
|
19389
|
+
},
|
|
19390
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19391
|
+
};
|
|
19392
|
+
const hideRows = {
|
|
19393
|
+
name: HIDE_ROWS_NAME,
|
|
19394
|
+
execute: (env) => {
|
|
19395
|
+
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
19396
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19397
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19398
|
+
dimension: "ROW",
|
|
19399
|
+
elements: rows,
|
|
19400
|
+
});
|
|
19401
|
+
},
|
|
19402
|
+
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
19403
|
+
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
19404
|
+
};
|
|
19405
|
+
const unhideRows = {
|
|
19406
|
+
name: _lt("Unhide rows"),
|
|
19407
|
+
execute: (env) => {
|
|
19408
|
+
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
19409
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19410
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19411
|
+
dimension: "ROW",
|
|
19412
|
+
elements: columns,
|
|
19413
|
+
});
|
|
19414
|
+
},
|
|
19415
|
+
isVisible: (env) => {
|
|
19416
|
+
const hiddenRows = env.model.getters
|
|
19417
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
19418
|
+
.flat();
|
|
19419
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
19420
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
19421
|
+
},
|
|
19422
|
+
};
|
|
19423
|
+
const unhideAllRows = {
|
|
19424
|
+
name: _lt("Unhide all rows"),
|
|
19425
|
+
execute: (env) => {
|
|
19426
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19427
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19428
|
+
sheetId,
|
|
19429
|
+
dimension: "ROW",
|
|
19430
|
+
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
19431
|
+
});
|
|
19432
|
+
},
|
|
19433
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19434
|
+
};
|
|
19435
|
+
const unFreezePane = {
|
|
19436
|
+
name: _lt("Unfreeze"),
|
|
19437
|
+
isVisible: (env) => {
|
|
19438
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
19439
|
+
return xSplit + ySplit > 0;
|
|
19440
|
+
},
|
|
19441
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
19442
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19443
|
+
}),
|
|
19444
|
+
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
19445
|
+
};
|
|
19446
|
+
const freezePane = {
|
|
19447
|
+
name: _lt("Freeze"),
|
|
19448
|
+
icon: "o-spreadsheet-Icon.FREEZE",
|
|
19449
|
+
};
|
|
19450
|
+
const unFreezeRows = {
|
|
19451
|
+
name: _lt("No rows"),
|
|
19452
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
19453
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19454
|
+
}),
|
|
19455
|
+
isReadonlyAllowed: true,
|
|
19456
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
19457
|
+
};
|
|
19458
|
+
const freezeFirstRow = {
|
|
19459
|
+
name: _lt("1 row"),
|
|
19460
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
19461
|
+
isReadonlyAllowed: true,
|
|
19462
|
+
};
|
|
19463
|
+
const freezeSecondRow = {
|
|
19464
|
+
name: _lt("2 rows"),
|
|
19465
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
19466
|
+
isReadonlyAllowed: true,
|
|
19467
|
+
};
|
|
19468
|
+
const freezeCurrentRow = {
|
|
19469
|
+
name: _lt("Up to current row"),
|
|
19470
|
+
execute: (env) => {
|
|
19471
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
19472
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
19473
|
+
},
|
|
19474
|
+
isReadonlyAllowed: true,
|
|
19475
|
+
};
|
|
19476
|
+
const unFreezeCols = {
|
|
19477
|
+
name: _lt("No columns"),
|
|
19478
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
19479
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19480
|
+
}),
|
|
19481
|
+
isReadonlyAllowed: true,
|
|
19482
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
19483
|
+
};
|
|
19484
|
+
const freezeFirstCol = {
|
|
19485
|
+
name: _lt("1 column"),
|
|
19486
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
19487
|
+
isReadonlyAllowed: true,
|
|
19488
|
+
};
|
|
19489
|
+
const freezeSecondCol = {
|
|
19490
|
+
name: _lt("2 columns"),
|
|
19491
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
19492
|
+
isReadonlyAllowed: true,
|
|
19493
|
+
};
|
|
19494
|
+
const freezeCurrentCol = {
|
|
19495
|
+
name: _lt("Up to current column"),
|
|
19496
|
+
execute: (env) => {
|
|
19497
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
19498
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
19499
|
+
},
|
|
19500
|
+
isReadonlyAllowed: true,
|
|
19501
|
+
};
|
|
19502
|
+
const viewGridlines = {
|
|
19503
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
19504
|
+
? _lt("Hide gridlines")
|
|
19505
|
+
: _lt("Show gridlines"),
|
|
19506
|
+
execute: (env) => {
|
|
19507
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19508
|
+
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
19509
|
+
sheetId,
|
|
19510
|
+
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
19511
|
+
});
|
|
19512
|
+
},
|
|
19513
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
19514
|
+
};
|
|
19515
|
+
const viewFormulas = {
|
|
19516
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
19517
|
+
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
19518
|
+
isReadonlyAllowed: true,
|
|
19519
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
19520
|
+
};
|
|
19521
|
+
const createRemoveFilter = {
|
|
19522
|
+
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
19523
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
19524
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
19525
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
19526
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
19527
|
+
};
|
|
19528
|
+
function selectionContainsFilter(env) {
|
|
19529
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19530
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
19531
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
19532
|
+
}
|
|
19533
|
+
function cannotCreateFilter(env) {
|
|
19534
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
19535
|
+
}
|
|
19536
|
+
function createRemoveFilterAction(env) {
|
|
19537
|
+
if (selectionContainsFilter(env)) {
|
|
19538
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19539
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19540
|
+
target: env.model.getters.getSelectedZones(),
|
|
19541
|
+
});
|
|
19542
|
+
return;
|
|
19543
|
+
}
|
|
19544
|
+
if (cannotCreateFilter(env)) {
|
|
19545
|
+
return;
|
|
19546
|
+
}
|
|
19547
|
+
env.model.selection.selectTableAroundSelection();
|
|
19548
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19549
|
+
const selection = env.model.getters.getSelectedZones();
|
|
19550
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
19551
|
+
}
|
|
19552
|
+
|
|
19553
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
19554
|
+
__proto__: null,
|
|
19555
|
+
hideCols: hideCols,
|
|
19556
|
+
unhideCols: unhideCols,
|
|
19557
|
+
unhideAllCols: unhideAllCols,
|
|
19558
|
+
hideRows: hideRows,
|
|
19559
|
+
unhideRows: unhideRows,
|
|
19560
|
+
unhideAllRows: unhideAllRows,
|
|
19561
|
+
unFreezePane: unFreezePane,
|
|
19562
|
+
freezePane: freezePane,
|
|
19563
|
+
unFreezeRows: unFreezeRows,
|
|
19564
|
+
freezeFirstRow: freezeFirstRow,
|
|
19565
|
+
freezeSecondRow: freezeSecondRow,
|
|
19566
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
19567
|
+
unFreezeCols: unFreezeCols,
|
|
19568
|
+
freezeFirstCol: freezeFirstCol,
|
|
19569
|
+
freezeSecondCol: freezeSecondCol,
|
|
19570
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
19571
|
+
viewGridlines: viewGridlines,
|
|
19572
|
+
viewFormulas: viewFormulas,
|
|
19573
|
+
createRemoveFilter: createRemoveFilter,
|
|
19574
|
+
createRemoveFilterAction: createRemoveFilterAction
|
|
19575
|
+
});
|
|
19576
|
+
|
|
19339
19577
|
const sortRange = {
|
|
19340
19578
|
name: _lt("Sort range"),
|
|
19341
19579
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
@@ -19359,32 +19597,15 @@ const sortDescending = {
|
|
|
19359
19597
|
},
|
|
19360
19598
|
icon: "o-spreadsheet-Icon.SORT_DESCENDING",
|
|
19361
19599
|
};
|
|
19362
|
-
const
|
|
19363
|
-
name: _lt("Create filter"),
|
|
19364
|
-
execute: (env) =>
|
|
19365
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19366
|
-
const selection = env.model.getters.getSelection().zones;
|
|
19367
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
19368
|
-
},
|
|
19369
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
19600
|
+
const addRemoveDataFilter = {
|
|
19601
|
+
name: (env) => SELECTION_CONTAINS_FILTER(env) ? _lt("Remove filter") : _lt("Create filter"),
|
|
19602
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
19370
19603
|
isEnabled: (env) => {
|
|
19371
19604
|
const selectedZones = env.model.getters.getSelectedZones();
|
|
19372
19605
|
return areZonesContinuous(...selectedZones);
|
|
19373
19606
|
},
|
|
19374
19607
|
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19375
19608
|
};
|
|
19376
|
-
const removeDataFilter = {
|
|
19377
|
-
name: _lt("Remove filter"),
|
|
19378
|
-
execute: (env) => {
|
|
19379
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19380
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19381
|
-
sheetId,
|
|
19382
|
-
target: env.model.getters.getSelectedZones(),
|
|
19383
|
-
});
|
|
19384
|
-
},
|
|
19385
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
19386
|
-
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19387
|
-
};
|
|
19388
19609
|
const splitToColumns = {
|
|
19389
19610
|
name: _lt("Split text to columns"),
|
|
19390
19611
|
sequence: 1,
|
|
@@ -19764,242 +19985,6 @@ var ACTION_FORMAT = /*#__PURE__*/Object.freeze({
|
|
|
19764
19985
|
clearFormat: clearFormat
|
|
19765
19986
|
});
|
|
19766
19987
|
|
|
19767
|
-
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
19768
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19769
|
-
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
19770
|
-
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
19771
|
-
if (result.isCancelledBecause(68 /* CommandResult.MergeOverlap */)) {
|
|
19772
|
-
env.raiseError(MergeErrorMessage);
|
|
19773
|
-
}
|
|
19774
|
-
}
|
|
19775
|
-
|
|
19776
|
-
const hideCols = {
|
|
19777
|
-
name: HIDE_COLUMNS_NAME,
|
|
19778
|
-
execute: (env) => {
|
|
19779
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19780
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19781
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19782
|
-
dimension: "COL",
|
|
19783
|
-
elements: columns,
|
|
19784
|
-
});
|
|
19785
|
-
},
|
|
19786
|
-
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
19787
|
-
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
19788
|
-
};
|
|
19789
|
-
const unhideCols = {
|
|
19790
|
-
name: _lt("Unhide columns"),
|
|
19791
|
-
execute: (env) => {
|
|
19792
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19793
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19794
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19795
|
-
dimension: "COL",
|
|
19796
|
-
elements: columns,
|
|
19797
|
-
});
|
|
19798
|
-
},
|
|
19799
|
-
isVisible: (env) => {
|
|
19800
|
-
const hiddenCols = env.model.getters
|
|
19801
|
-
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
19802
|
-
.flat();
|
|
19803
|
-
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
19804
|
-
return currentCols.some((col) => hiddenCols.includes(col));
|
|
19805
|
-
},
|
|
19806
|
-
};
|
|
19807
|
-
const unhideAllCols = {
|
|
19808
|
-
name: _lt("Unhide all columns"),
|
|
19809
|
-
execute: (env) => {
|
|
19810
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19811
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19812
|
-
sheetId,
|
|
19813
|
-
dimension: "COL",
|
|
19814
|
-
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
19815
|
-
});
|
|
19816
|
-
},
|
|
19817
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19818
|
-
};
|
|
19819
|
-
const hideRows = {
|
|
19820
|
-
name: HIDE_ROWS_NAME,
|
|
19821
|
-
execute: (env) => {
|
|
19822
|
-
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
19823
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19824
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19825
|
-
dimension: "ROW",
|
|
19826
|
-
elements: rows,
|
|
19827
|
-
});
|
|
19828
|
-
},
|
|
19829
|
-
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
19830
|
-
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
19831
|
-
};
|
|
19832
|
-
const unhideRows = {
|
|
19833
|
-
name: _lt("Unhide rows"),
|
|
19834
|
-
execute: (env) => {
|
|
19835
|
-
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
19836
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19837
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19838
|
-
dimension: "ROW",
|
|
19839
|
-
elements: columns,
|
|
19840
|
-
});
|
|
19841
|
-
},
|
|
19842
|
-
isVisible: (env) => {
|
|
19843
|
-
const hiddenRows = env.model.getters
|
|
19844
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
19845
|
-
.flat();
|
|
19846
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
19847
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
19848
|
-
},
|
|
19849
|
-
};
|
|
19850
|
-
const unhideAllRows = {
|
|
19851
|
-
name: _lt("Unhide all rows"),
|
|
19852
|
-
execute: (env) => {
|
|
19853
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19854
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19855
|
-
sheetId,
|
|
19856
|
-
dimension: "ROW",
|
|
19857
|
-
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
19858
|
-
});
|
|
19859
|
-
},
|
|
19860
|
-
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19861
|
-
};
|
|
19862
|
-
const unFreezePane = {
|
|
19863
|
-
name: _lt("Unfreeze"),
|
|
19864
|
-
isVisible: (env) => {
|
|
19865
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
19866
|
-
return xSplit + ySplit > 0;
|
|
19867
|
-
},
|
|
19868
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
19869
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19870
|
-
}),
|
|
19871
|
-
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
19872
|
-
};
|
|
19873
|
-
const freezePane = {
|
|
19874
|
-
name: _lt("Freeze"),
|
|
19875
|
-
icon: "o-spreadsheet-Icon.FREEZE",
|
|
19876
|
-
};
|
|
19877
|
-
const unFreezeRows = {
|
|
19878
|
-
name: _lt("No rows"),
|
|
19879
|
-
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
19880
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19881
|
-
}),
|
|
19882
|
-
isReadonlyAllowed: true,
|
|
19883
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
19884
|
-
};
|
|
19885
|
-
const freezeFirstRow = {
|
|
19886
|
-
name: _lt("1 row"),
|
|
19887
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
19888
|
-
isReadonlyAllowed: true,
|
|
19889
|
-
};
|
|
19890
|
-
const freezeSecondRow = {
|
|
19891
|
-
name: _lt("2 rows"),
|
|
19892
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
19893
|
-
isReadonlyAllowed: true,
|
|
19894
|
-
};
|
|
19895
|
-
const freezeCurrentRow = {
|
|
19896
|
-
name: _lt("Up to current row"),
|
|
19897
|
-
execute: (env) => {
|
|
19898
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
19899
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
19900
|
-
},
|
|
19901
|
-
isReadonlyAllowed: true,
|
|
19902
|
-
};
|
|
19903
|
-
const unFreezeCols = {
|
|
19904
|
-
name: _lt("No columns"),
|
|
19905
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
19906
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19907
|
-
}),
|
|
19908
|
-
isReadonlyAllowed: true,
|
|
19909
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
19910
|
-
};
|
|
19911
|
-
const freezeFirstCol = {
|
|
19912
|
-
name: _lt("1 column"),
|
|
19913
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
19914
|
-
isReadonlyAllowed: true,
|
|
19915
|
-
};
|
|
19916
|
-
const freezeSecondCol = {
|
|
19917
|
-
name: _lt("2 columns"),
|
|
19918
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
19919
|
-
isReadonlyAllowed: true,
|
|
19920
|
-
};
|
|
19921
|
-
const freezeCurrentCol = {
|
|
19922
|
-
name: _lt("Up to current column"),
|
|
19923
|
-
execute: (env) => {
|
|
19924
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
19925
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
19926
|
-
},
|
|
19927
|
-
isReadonlyAllowed: true,
|
|
19928
|
-
};
|
|
19929
|
-
const viewGridlines = {
|
|
19930
|
-
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
19931
|
-
? _lt("Hide gridlines")
|
|
19932
|
-
: _lt("Show gridlines"),
|
|
19933
|
-
execute: (env) => {
|
|
19934
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19935
|
-
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
19936
|
-
sheetId,
|
|
19937
|
-
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
19938
|
-
});
|
|
19939
|
-
},
|
|
19940
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
19941
|
-
};
|
|
19942
|
-
const viewFormulas = {
|
|
19943
|
-
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
19944
|
-
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
19945
|
-
isReadonlyAllowed: true,
|
|
19946
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
19947
|
-
};
|
|
19948
|
-
const createRemoveFilter = {
|
|
19949
|
-
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
19950
|
-
isActive: (env) => selectionContainsFilter(env),
|
|
19951
|
-
isEnabled: (env) => !cannotCreateFilter(env),
|
|
19952
|
-
execute: (env) => createRemoveFilterAction(env),
|
|
19953
|
-
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
19954
|
-
};
|
|
19955
|
-
function selectionContainsFilter(env) {
|
|
19956
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19957
|
-
const selectedZones = env.model.getters.getSelectedZones();
|
|
19958
|
-
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
19959
|
-
}
|
|
19960
|
-
function cannotCreateFilter(env) {
|
|
19961
|
-
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
19962
|
-
}
|
|
19963
|
-
function createRemoveFilterAction(env) {
|
|
19964
|
-
if (selectionContainsFilter(env)) {
|
|
19965
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19966
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19967
|
-
target: env.model.getters.getSelectedZones(),
|
|
19968
|
-
});
|
|
19969
|
-
return;
|
|
19970
|
-
}
|
|
19971
|
-
if (cannotCreateFilter(env)) {
|
|
19972
|
-
return;
|
|
19973
|
-
}
|
|
19974
|
-
env.model.selection.selectTableAroundSelection();
|
|
19975
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19976
|
-
const selection = env.model.getters.getSelectedZones();
|
|
19977
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
19978
|
-
}
|
|
19979
|
-
|
|
19980
|
-
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
19981
|
-
__proto__: null,
|
|
19982
|
-
hideCols: hideCols,
|
|
19983
|
-
unhideCols: unhideCols,
|
|
19984
|
-
unhideAllCols: unhideAllCols,
|
|
19985
|
-
hideRows: hideRows,
|
|
19986
|
-
unhideRows: unhideRows,
|
|
19987
|
-
unhideAllRows: unhideAllRows,
|
|
19988
|
-
unFreezePane: unFreezePane,
|
|
19989
|
-
freezePane: freezePane,
|
|
19990
|
-
unFreezeRows: unFreezeRows,
|
|
19991
|
-
freezeFirstRow: freezeFirstRow,
|
|
19992
|
-
freezeSecondRow: freezeSecondRow,
|
|
19993
|
-
freezeCurrentRow: freezeCurrentRow,
|
|
19994
|
-
unFreezeCols: unFreezeCols,
|
|
19995
|
-
freezeFirstCol: freezeFirstCol,
|
|
19996
|
-
freezeSecondCol: freezeSecondCol,
|
|
19997
|
-
freezeCurrentCol: freezeCurrentCol,
|
|
19998
|
-
viewGridlines: viewGridlines,
|
|
19999
|
-
viewFormulas: viewFormulas,
|
|
20000
|
-
createRemoveFilter: createRemoveFilter
|
|
20001
|
-
});
|
|
20002
|
-
|
|
20003
19988
|
const colMenuRegistry = new MenuItemRegistry();
|
|
20004
19989
|
colMenuRegistry
|
|
20005
19990
|
.add("cut", {
|
|
@@ -20574,12 +20559,8 @@ topbarMenuRegistry
|
|
|
20574
20559
|
sequence: 20,
|
|
20575
20560
|
separator: true,
|
|
20576
20561
|
})
|
|
20577
|
-
.addChild("
|
|
20578
|
-
...
|
|
20579
|
-
sequence: 30,
|
|
20580
|
-
})
|
|
20581
|
-
.addChild("remove_data_filter", ["data"], {
|
|
20582
|
-
...removeDataFilter,
|
|
20562
|
+
.addChild("add_remove_data_filter", ["data"], {
|
|
20563
|
+
...addRemoveDataFilter,
|
|
20583
20564
|
sequence: 30,
|
|
20584
20565
|
});
|
|
20585
20566
|
|
|
@@ -24462,6 +24443,11 @@ class Composer extends Component {
|
|
|
24462
24443
|
}
|
|
24463
24444
|
}
|
|
24464
24445
|
}
|
|
24446
|
+
onContextMenu(ev) {
|
|
24447
|
+
if (this.env.model.getters.getEditionMode() === "inactive") {
|
|
24448
|
+
this.props.onInputContextMenu?.(ev);
|
|
24449
|
+
}
|
|
24450
|
+
}
|
|
24465
24451
|
// ---------------------------------------------------------------------------
|
|
24466
24452
|
// Private
|
|
24467
24453
|
// ---------------------------------------------------------------------------
|
|
@@ -24686,6 +24672,7 @@ Composer.props = {
|
|
|
24686
24672
|
onComposerCellFocused: { type: Function, optional: true },
|
|
24687
24673
|
onComposerContentFocused: Function,
|
|
24688
24674
|
isDefaultFocus: { type: Boolean, optional: true },
|
|
24675
|
+
onInputContextMenu: { type: Function, optional: true },
|
|
24689
24676
|
};
|
|
24690
24677
|
|
|
24691
24678
|
const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
|
|
@@ -24762,6 +24749,7 @@ class GridComposer extends Component {
|
|
|
24762
24749
|
isDefaultFocus: true,
|
|
24763
24750
|
onComposerContentFocused: this.props.onComposerContentFocused,
|
|
24764
24751
|
onComposerCellFocused: this.props.onComposerCellFocused,
|
|
24752
|
+
onInputContextMenu: this.props.onInputContextMenu,
|
|
24765
24753
|
};
|
|
24766
24754
|
}
|
|
24767
24755
|
get containerStyle() {
|
|
@@ -24850,6 +24838,7 @@ GridComposer.props = {
|
|
|
24850
24838
|
onComposerContentFocused: Function,
|
|
24851
24839
|
gridDims: Object,
|
|
24852
24840
|
onComposerCellFocused: Function,
|
|
24841
|
+
onInputContextMenu: Function,
|
|
24853
24842
|
};
|
|
24854
24843
|
|
|
24855
24844
|
const CSS$1 = css /* scss */ `
|
|
@@ -27199,8 +27188,8 @@ class Grid extends Component {
|
|
|
27199
27188
|
else if (this.env.model.getters.getActiveRows().has(row)) {
|
|
27200
27189
|
type = "ROW";
|
|
27201
27190
|
}
|
|
27202
|
-
const { x, y, width
|
|
27203
|
-
this.toggleContextMenu(type, x + width, y +
|
|
27191
|
+
const { x, y, width } = this.env.model.getters.getVisibleRect(lastZone);
|
|
27192
|
+
this.toggleContextMenu(type, this.canvasPosition.x + x + width, this.canvasPosition.y + y);
|
|
27204
27193
|
}
|
|
27205
27194
|
onCellRightClicked(col, row, { x, y }) {
|
|
27206
27195
|
const zones = this.env.model.getters.getSelectedZones();
|
|
@@ -28490,29 +28479,12 @@ function convertWidthFromExcel(width) {
|
|
|
28490
28479
|
return width;
|
|
28491
28480
|
return Math.round((width / WIDTH_FACTOR) * 100) / 100;
|
|
28492
28481
|
}
|
|
28493
|
-
function convertBorderDescr(descr) {
|
|
28494
|
-
if (!descr) {
|
|
28495
|
-
return undefined;
|
|
28496
|
-
}
|
|
28497
|
-
return {
|
|
28498
|
-
style: descr.style,
|
|
28499
|
-
color: { rgb: descr.color },
|
|
28500
|
-
};
|
|
28501
|
-
}
|
|
28502
28482
|
function extractStyle(cell, data) {
|
|
28503
28483
|
let style = {};
|
|
28504
28484
|
if (cell.style) {
|
|
28505
28485
|
style = data.styles[cell.style];
|
|
28506
28486
|
}
|
|
28507
28487
|
const format = extractFormat(cell, data);
|
|
28508
|
-
const exportedBorder = {};
|
|
28509
|
-
if (cell.border) {
|
|
28510
|
-
const border = data.borders[cell.border];
|
|
28511
|
-
exportedBorder.left = convertBorderDescr(border.left);
|
|
28512
|
-
exportedBorder.right = convertBorderDescr(border.right);
|
|
28513
|
-
exportedBorder.bottom = convertBorderDescr(border.bottom);
|
|
28514
|
-
exportedBorder.top = convertBorderDescr(border.top);
|
|
28515
|
-
}
|
|
28516
28488
|
const styles = {
|
|
28517
28489
|
font: {
|
|
28518
28490
|
size: style?.fontSize || DEFAULT_FONT_SIZE,
|
|
@@ -28526,7 +28498,7 @@ function extractStyle(cell, data) {
|
|
|
28526
28498
|
}
|
|
28527
28499
|
: { reservedAttribute: "none" },
|
|
28528
28500
|
numFmt: format ? { format: format, id: 0 /* id not used for export */ } : undefined,
|
|
28529
|
-
border:
|
|
28501
|
+
border: cell.border || 0,
|
|
28530
28502
|
alignment: {
|
|
28531
28503
|
horizontal: style.align,
|
|
28532
28504
|
vertical: style.verticalAlign
|
|
@@ -28548,15 +28520,12 @@ function extractFormat(cell, data) {
|
|
|
28548
28520
|
return undefined;
|
|
28549
28521
|
}
|
|
28550
28522
|
function normalizeStyle(construct, styles) {
|
|
28551
|
-
const { id: fontId } = pushElement(styles["font"], construct.fonts);
|
|
28552
|
-
const { id: fillId } = pushElement(styles["fill"], construct.fills);
|
|
28553
|
-
const { id: borderId } = pushElement(styles["border"], construct.borders);
|
|
28554
28523
|
// Normalize this
|
|
28555
28524
|
const numFmtId = convertFormat(styles["numFmt"], construct.numFmts);
|
|
28556
28525
|
const style = {
|
|
28557
|
-
fontId,
|
|
28558
|
-
fillId,
|
|
28559
|
-
borderId,
|
|
28526
|
+
fontId: pushElement(styles.font, construct.fonts),
|
|
28527
|
+
fillId: pushElement(styles.fill, construct.fills),
|
|
28528
|
+
borderId: styles.border,
|
|
28560
28529
|
numFmtId,
|
|
28561
28530
|
alignment: {
|
|
28562
28531
|
vertical: styles.alignment.vertical,
|
|
@@ -28564,8 +28533,7 @@ function normalizeStyle(construct, styles) {
|
|
|
28564
28533
|
wrapText: styles.alignment.wrapText,
|
|
28565
28534
|
},
|
|
28566
28535
|
};
|
|
28567
|
-
|
|
28568
|
-
return id;
|
|
28536
|
+
return pushElement(style, construct.styles);
|
|
28569
28537
|
}
|
|
28570
28538
|
function convertFormat(format, numFmtStructure) {
|
|
28571
28539
|
if (!format) {
|
|
@@ -28573,8 +28541,7 @@ function convertFormat(format, numFmtStructure) {
|
|
|
28573
28541
|
}
|
|
28574
28542
|
let formatId = XLSX_FORMAT_MAP[format.format];
|
|
28575
28543
|
if (!formatId) {
|
|
28576
|
-
|
|
28577
|
-
formatId = id + FIRST_NUMFMT_ID;
|
|
28544
|
+
formatId = pushElement(format, numFmtStructure) + FIRST_NUMFMT_ID;
|
|
28578
28545
|
}
|
|
28579
28546
|
return formatId;
|
|
28580
28547
|
}
|
|
@@ -28599,20 +28566,15 @@ function addRelsToFile(relsFiles, path, rel) {
|
|
|
28599
28566
|
return id;
|
|
28600
28567
|
}
|
|
28601
28568
|
function pushElement(property, propertyList) {
|
|
28602
|
-
|
|
28603
|
-
|
|
28604
|
-
|
|
28569
|
+
let len = propertyList.length;
|
|
28570
|
+
const operator = typeof property === "object" ? deepEquals : (a, b) => a === b;
|
|
28571
|
+
for (let i = 0; i < len; i++) {
|
|
28572
|
+
if (operator(property, propertyList[i])) {
|
|
28573
|
+
return i;
|
|
28605
28574
|
}
|
|
28606
28575
|
}
|
|
28607
|
-
|
|
28608
|
-
|
|
28609
|
-
propertyList.push(property);
|
|
28610
|
-
elemId = propertyList.length - 1;
|
|
28611
|
-
}
|
|
28612
|
-
return {
|
|
28613
|
-
id: elemId,
|
|
28614
|
-
list: propertyList,
|
|
28615
|
-
};
|
|
28576
|
+
propertyList[propertyList.length] = property;
|
|
28577
|
+
return propertyList.length - 1;
|
|
28616
28578
|
}
|
|
28617
28579
|
const chartIds = [];
|
|
28618
28580
|
/**
|
|
@@ -29333,7 +29295,25 @@ function parseXML(xmlString, mimeType = "text/xml") {
|
|
|
29333
29295
|
}
|
|
29334
29296
|
return document;
|
|
29335
29297
|
}
|
|
29336
|
-
function
|
|
29298
|
+
function convertBorderDescr(descr) {
|
|
29299
|
+
if (!descr) {
|
|
29300
|
+
return undefined;
|
|
29301
|
+
}
|
|
29302
|
+
return {
|
|
29303
|
+
style: descr.style,
|
|
29304
|
+
color: { rgb: descr.color },
|
|
29305
|
+
};
|
|
29306
|
+
}
|
|
29307
|
+
function getDefaultXLSXStructure(data) {
|
|
29308
|
+
const xlsxBorders = Object.values(data.borders).map((border) => {
|
|
29309
|
+
return {
|
|
29310
|
+
left: convertBorderDescr(border.left),
|
|
29311
|
+
right: convertBorderDescr(border.right),
|
|
29312
|
+
bottom: convertBorderDescr(border.bottom),
|
|
29313
|
+
top: convertBorderDescr(border.top),
|
|
29314
|
+
};
|
|
29315
|
+
});
|
|
29316
|
+
const borders = [{}, ...xlsxBorders];
|
|
29337
29317
|
return {
|
|
29338
29318
|
relsFiles: [],
|
|
29339
29319
|
sharedStrings: [],
|
|
@@ -29356,7 +29336,7 @@ function getDefaultXLSXStructure() {
|
|
|
29356
29336
|
},
|
|
29357
29337
|
],
|
|
29358
29338
|
fills: [{ reservedAttribute: "none" }, { reservedAttribute: "gray125" }],
|
|
29359
|
-
borders
|
|
29339
|
+
borders,
|
|
29360
29340
|
numFmts: [],
|
|
29361
29341
|
dxfs: [],
|
|
29362
29342
|
};
|
|
@@ -33421,7 +33401,17 @@ class FiltersPlugin extends CorePlugin {
|
|
|
33421
33401
|
}
|
|
33422
33402
|
}
|
|
33423
33403
|
exportForExcel(data) {
|
|
33424
|
-
|
|
33404
|
+
for (const sheet of data.sheets) {
|
|
33405
|
+
for (const filterTable of this.getFilterTables(sheet.id)) {
|
|
33406
|
+
if (zoneToDimension(filterTable.zone).numberOfRows === 1) {
|
|
33407
|
+
continue;
|
|
33408
|
+
}
|
|
33409
|
+
sheet.filterTables.push({
|
|
33410
|
+
range: zoneToXc(filterTable.zone),
|
|
33411
|
+
filters: [],
|
|
33412
|
+
});
|
|
33413
|
+
}
|
|
33414
|
+
}
|
|
33425
33415
|
}
|
|
33426
33416
|
}
|
|
33427
33417
|
|
|
@@ -36715,7 +36705,9 @@ class Evaluator {
|
|
|
36715
36705
|
this.blockedArrayFormulas = new Set();
|
|
36716
36706
|
this.spreadingRelations = new SpreadingRelation();
|
|
36717
36707
|
this.formulaDependencies = lazy(() => {
|
|
36718
|
-
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
36708
|
+
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
36709
|
+
.filter((range) => !range.invalidSheetName && !range.invalidXc)
|
|
36710
|
+
.map((range) => ({
|
|
36719
36711
|
data: positionId,
|
|
36720
36712
|
boundingBox: {
|
|
36721
36713
|
zone: range.zone,
|
|
@@ -45250,13 +45242,14 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45250
45242
|
}
|
|
45251
45243
|
}
|
|
45252
45244
|
handleEvent(event) {
|
|
45245
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
45253
45246
|
if (event.options.scrollIntoView) {
|
|
45254
45247
|
let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
|
|
45255
45248
|
if (event.mode === "updateAnchor") {
|
|
45256
45249
|
const oldZone = event.previousAnchor.zone;
|
|
45257
45250
|
const newZone = event.anchor.zone;
|
|
45258
45251
|
// altering a zone should not move the viewport in a dimension that wasn't changed
|
|
45259
|
-
const { top, bottom, left, right } = this.
|
|
45252
|
+
const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
|
|
45260
45253
|
if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
|
|
45261
45254
|
col = left > col || col > right ? left : col;
|
|
45262
45255
|
}
|
|
@@ -45264,7 +45257,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45264
45257
|
row = top > row || row > bottom ? top : row;
|
|
45265
45258
|
}
|
|
45266
45259
|
}
|
|
45267
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
45268
45260
|
col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
|
|
45269
45261
|
row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
|
|
45270
45262
|
this.refreshViewport(this.getters.getActiveSheetId(), { col, row });
|
|
@@ -45290,16 +45282,16 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45290
45282
|
this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
|
|
45291
45283
|
break;
|
|
45292
45284
|
case "SHIFT_VIEWPORT_DOWN":
|
|
45293
|
-
const { top } = this.getActiveMainViewport();
|
|
45294
45285
|
const sheetId = this.getters.getActiveSheetId();
|
|
45295
|
-
const
|
|
45296
|
-
this.
|
|
45286
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
45287
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
45288
|
+
this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
|
|
45297
45289
|
break;
|
|
45298
45290
|
case "SHIFT_VIEWPORT_UP": {
|
|
45299
|
-
const { top } = this.getActiveMainViewport();
|
|
45300
45291
|
const sheetId = this.getters.getActiveSheetId();
|
|
45301
|
-
const
|
|
45302
|
-
this.
|
|
45292
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
45293
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
45294
|
+
this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
|
|
45303
45295
|
break;
|
|
45304
45296
|
}
|
|
45305
45297
|
case "REMOVE_COLUMNS_ROWS":
|
|
@@ -45661,17 +45653,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45661
45653
|
const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
|
|
45662
45654
|
Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
|
|
45663
45655
|
}
|
|
45664
|
-
/**
|
|
45665
|
-
* Clip the vertical offset within the allowed range.
|
|
45666
|
-
* Not above the sheet, nor below the sheet.
|
|
45667
|
-
*/
|
|
45668
|
-
clipOffsetY(offsetY) {
|
|
45669
|
-
const { height } = this.getMainViewportRect();
|
|
45670
|
-
const maxOffset = height - this.sheetViewHeight;
|
|
45671
|
-
offsetY = Math.min(offsetY, maxOffset);
|
|
45672
|
-
offsetY = Math.max(offsetY, 0);
|
|
45673
|
-
return offsetY;
|
|
45674
|
-
}
|
|
45675
45656
|
getViewportOffset(sheetId) {
|
|
45676
45657
|
return {
|
|
45677
45658
|
x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
|
|
@@ -45727,12 +45708,15 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45727
45708
|
* viewport top.
|
|
45728
45709
|
*/
|
|
45729
45710
|
shiftVertically(offset) {
|
|
45730
|
-
const
|
|
45711
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
45712
|
+
const { top } = this.getMainInternalViewport(sheetId);
|
|
45731
45713
|
const { scrollX } = this.getActiveSheetScrollInfo();
|
|
45732
45714
|
this.setSheetViewOffset(scrollX, offset);
|
|
45733
45715
|
const { anchor } = this.getters.getSelection();
|
|
45734
|
-
|
|
45735
|
-
|
|
45716
|
+
if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
|
|
45717
|
+
const deltaRow = this.getMainInternalViewport(sheetId).top - top;
|
|
45718
|
+
this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
|
|
45719
|
+
}
|
|
45736
45720
|
}
|
|
45737
45721
|
getVisibleFigures() {
|
|
45738
45722
|
const sheetId = this.getters.getActiveSheetId();
|
|
@@ -46748,7 +46732,6 @@ css /* scss */ `
|
|
|
46748
46732
|
cursor: pointer;
|
|
46749
46733
|
}
|
|
46750
46734
|
`;
|
|
46751
|
-
let tKey = 1;
|
|
46752
46735
|
class SpreadsheetDashboard extends Component {
|
|
46753
46736
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
46754
46737
|
static components = {
|
|
@@ -46826,13 +46809,9 @@ class SpreadsheetDashboard extends Component {
|
|
|
46826
46809
|
coordinates: rect,
|
|
46827
46810
|
position: { col, row },
|
|
46828
46811
|
action,
|
|
46829
|
-
// we can't rely on position only because a row or a column could
|
|
46830
|
-
// be inserted at any time.
|
|
46831
|
-
tKey: `${tKey}-${col}-${row}`,
|
|
46832
46812
|
});
|
|
46833
46813
|
}
|
|
46834
46814
|
}
|
|
46835
|
-
tKey++;
|
|
46836
46815
|
return cells;
|
|
46837
46816
|
}
|
|
46838
46817
|
getClickableAction(position) {
|
|
@@ -49989,8 +49968,7 @@ function addContent(content, sharedStrings, forceString = false) {
|
|
|
49989
49968
|
attrs.push(["t", "b"]);
|
|
49990
49969
|
}
|
|
49991
49970
|
else if (forceString || !isNumber(value, DEFAULT_LOCALE)) {
|
|
49992
|
-
|
|
49993
|
-
value = id.toString();
|
|
49971
|
+
value = pushElement(content, sharedStrings);
|
|
49994
49972
|
attrs.push(["t", "s"]);
|
|
49995
49973
|
}
|
|
49996
49974
|
return { attrs, node: escapeXml /*xml*/ `<v>${value}</v>` };
|
|
@@ -50115,8 +50093,7 @@ function addCellIsRule(cf, rule, dxfs) {
|
|
|
50115
50093
|
if (rule.style.fillColor) {
|
|
50116
50094
|
dxf.fill = { fgColor: { rgb: rule.style.fillColor } };
|
|
50117
50095
|
}
|
|
50118
|
-
|
|
50119
|
-
ruleAttributes.push(["dxfId", id]);
|
|
50096
|
+
ruleAttributes.push(["dxfId", pushElement(dxf, dxfs)]);
|
|
50120
50097
|
return escapeXml /*xml*/ `
|
|
50121
50098
|
<conditionalFormatting sqref="${cf.ranges.join(" ")}">
|
|
50122
50099
|
<cfRule ${formatAttributes(ruleAttributes)}>
|
|
@@ -50925,7 +50902,7 @@ function addSheetViews(sheet) {
|
|
|
50925
50902
|
*/
|
|
50926
50903
|
function getXLSX(data) {
|
|
50927
50904
|
const files = [];
|
|
50928
|
-
const construct = getDefaultXLSXStructure();
|
|
50905
|
+
const construct = getDefaultXLSXStructure(data);
|
|
50929
50906
|
files.push(createWorkbook(data, construct));
|
|
50930
50907
|
files.push(...createWorksheets(data, construct));
|
|
50931
50908
|
files.push(createStylesSheet(construct));
|
|
@@ -51748,6 +51725,6 @@ const constants = {
|
|
|
51748
51725
|
export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
|
|
51749
51726
|
|
|
51750
51727
|
|
|
51751
|
-
__info__.version = '16.4.
|
|
51752
|
-
__info__.date = '2024-04-
|
|
51753
|
-
__info__.hash = '
|
|
51728
|
+
__info__.version = '16.4.30';
|
|
51729
|
+
__info__.date = '2024-04-18T16:39:04.255Z';
|
|
51730
|
+
__info__.hash = '39b015c';
|