@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
|
@@ -617,7 +617,7 @@ function deepEquals(o1, o2) {
|
|
|
617
617
|
if (typeof o1 !== typeof o2)
|
|
618
618
|
return false;
|
|
619
619
|
if (typeof o1 !== "object")
|
|
620
|
-
return
|
|
620
|
+
return false;
|
|
621
621
|
// Objects can have different keys if the values are undefined
|
|
622
622
|
const keys = new Set();
|
|
623
623
|
Object.keys(o1).forEach((key) => keys.add(key));
|
|
@@ -15801,6 +15801,7 @@ class LinkEditor extends owl.Component {
|
|
|
15801
15801
|
this.save();
|
|
15802
15802
|
}
|
|
15803
15803
|
ev.stopPropagation();
|
|
15804
|
+
ev.preventDefault();
|
|
15804
15805
|
break;
|
|
15805
15806
|
case "Escape":
|
|
15806
15807
|
this.cancel();
|
|
@@ -19340,6 +19341,243 @@ function interactiveAddFilter(env, sheetId, target) {
|
|
|
19340
19341
|
}
|
|
19341
19342
|
}
|
|
19342
19343
|
|
|
19344
|
+
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
19345
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19346
|
+
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
19347
|
+
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
19348
|
+
if (result.isCancelledBecause(68 /* CommandResult.MergeOverlap */)) {
|
|
19349
|
+
env.raiseError(MergeErrorMessage);
|
|
19350
|
+
}
|
|
19351
|
+
}
|
|
19352
|
+
|
|
19353
|
+
const hideCols = {
|
|
19354
|
+
name: HIDE_COLUMNS_NAME,
|
|
19355
|
+
execute: (env) => {
|
|
19356
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19357
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19358
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19359
|
+
dimension: "COL",
|
|
19360
|
+
elements: columns,
|
|
19361
|
+
});
|
|
19362
|
+
},
|
|
19363
|
+
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
19364
|
+
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
19365
|
+
};
|
|
19366
|
+
const unhideCols = {
|
|
19367
|
+
name: _lt("Unhide columns"),
|
|
19368
|
+
execute: (env) => {
|
|
19369
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19370
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19371
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19372
|
+
dimension: "COL",
|
|
19373
|
+
elements: columns,
|
|
19374
|
+
});
|
|
19375
|
+
},
|
|
19376
|
+
isVisible: (env) => {
|
|
19377
|
+
const hiddenCols = env.model.getters
|
|
19378
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
19379
|
+
.flat();
|
|
19380
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
19381
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
19382
|
+
},
|
|
19383
|
+
};
|
|
19384
|
+
const unhideAllCols = {
|
|
19385
|
+
name: _lt("Unhide all columns"),
|
|
19386
|
+
execute: (env) => {
|
|
19387
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19388
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19389
|
+
sheetId,
|
|
19390
|
+
dimension: "COL",
|
|
19391
|
+
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
19392
|
+
});
|
|
19393
|
+
},
|
|
19394
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19395
|
+
};
|
|
19396
|
+
const hideRows = {
|
|
19397
|
+
name: HIDE_ROWS_NAME,
|
|
19398
|
+
execute: (env) => {
|
|
19399
|
+
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
19400
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19401
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19402
|
+
dimension: "ROW",
|
|
19403
|
+
elements: rows,
|
|
19404
|
+
});
|
|
19405
|
+
},
|
|
19406
|
+
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
19407
|
+
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
19408
|
+
};
|
|
19409
|
+
const unhideRows = {
|
|
19410
|
+
name: _lt("Unhide rows"),
|
|
19411
|
+
execute: (env) => {
|
|
19412
|
+
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
19413
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19414
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19415
|
+
dimension: "ROW",
|
|
19416
|
+
elements: columns,
|
|
19417
|
+
});
|
|
19418
|
+
},
|
|
19419
|
+
isVisible: (env) => {
|
|
19420
|
+
const hiddenRows = env.model.getters
|
|
19421
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
19422
|
+
.flat();
|
|
19423
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
19424
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
19425
|
+
},
|
|
19426
|
+
};
|
|
19427
|
+
const unhideAllRows = {
|
|
19428
|
+
name: _lt("Unhide all rows"),
|
|
19429
|
+
execute: (env) => {
|
|
19430
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19431
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19432
|
+
sheetId,
|
|
19433
|
+
dimension: "ROW",
|
|
19434
|
+
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
19435
|
+
});
|
|
19436
|
+
},
|
|
19437
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19438
|
+
};
|
|
19439
|
+
const unFreezePane = {
|
|
19440
|
+
name: _lt("Unfreeze"),
|
|
19441
|
+
isVisible: (env) => {
|
|
19442
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
19443
|
+
return xSplit + ySplit > 0;
|
|
19444
|
+
},
|
|
19445
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
19446
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19447
|
+
}),
|
|
19448
|
+
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
19449
|
+
};
|
|
19450
|
+
const freezePane = {
|
|
19451
|
+
name: _lt("Freeze"),
|
|
19452
|
+
icon: "o-spreadsheet-Icon.FREEZE",
|
|
19453
|
+
};
|
|
19454
|
+
const unFreezeRows = {
|
|
19455
|
+
name: _lt("No rows"),
|
|
19456
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
19457
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19458
|
+
}),
|
|
19459
|
+
isReadonlyAllowed: true,
|
|
19460
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
19461
|
+
};
|
|
19462
|
+
const freezeFirstRow = {
|
|
19463
|
+
name: _lt("1 row"),
|
|
19464
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
19465
|
+
isReadonlyAllowed: true,
|
|
19466
|
+
};
|
|
19467
|
+
const freezeSecondRow = {
|
|
19468
|
+
name: _lt("2 rows"),
|
|
19469
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
19470
|
+
isReadonlyAllowed: true,
|
|
19471
|
+
};
|
|
19472
|
+
const freezeCurrentRow = {
|
|
19473
|
+
name: _lt("Up to current row"),
|
|
19474
|
+
execute: (env) => {
|
|
19475
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
19476
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
19477
|
+
},
|
|
19478
|
+
isReadonlyAllowed: true,
|
|
19479
|
+
};
|
|
19480
|
+
const unFreezeCols = {
|
|
19481
|
+
name: _lt("No columns"),
|
|
19482
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
19483
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19484
|
+
}),
|
|
19485
|
+
isReadonlyAllowed: true,
|
|
19486
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
19487
|
+
};
|
|
19488
|
+
const freezeFirstCol = {
|
|
19489
|
+
name: _lt("1 column"),
|
|
19490
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
19491
|
+
isReadonlyAllowed: true,
|
|
19492
|
+
};
|
|
19493
|
+
const freezeSecondCol = {
|
|
19494
|
+
name: _lt("2 columns"),
|
|
19495
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
19496
|
+
isReadonlyAllowed: true,
|
|
19497
|
+
};
|
|
19498
|
+
const freezeCurrentCol = {
|
|
19499
|
+
name: _lt("Up to current column"),
|
|
19500
|
+
execute: (env) => {
|
|
19501
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
19502
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
19503
|
+
},
|
|
19504
|
+
isReadonlyAllowed: true,
|
|
19505
|
+
};
|
|
19506
|
+
const viewGridlines = {
|
|
19507
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
19508
|
+
? _lt("Hide gridlines")
|
|
19509
|
+
: _lt("Show gridlines"),
|
|
19510
|
+
execute: (env) => {
|
|
19511
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19512
|
+
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
19513
|
+
sheetId,
|
|
19514
|
+
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
19515
|
+
});
|
|
19516
|
+
},
|
|
19517
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
19518
|
+
};
|
|
19519
|
+
const viewFormulas = {
|
|
19520
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
19521
|
+
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
19522
|
+
isReadonlyAllowed: true,
|
|
19523
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
19524
|
+
};
|
|
19525
|
+
const createRemoveFilter = {
|
|
19526
|
+
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
19527
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
19528
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
19529
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
19530
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
19531
|
+
};
|
|
19532
|
+
function selectionContainsFilter(env) {
|
|
19533
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19534
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
19535
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
19536
|
+
}
|
|
19537
|
+
function cannotCreateFilter(env) {
|
|
19538
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
19539
|
+
}
|
|
19540
|
+
function createRemoveFilterAction(env) {
|
|
19541
|
+
if (selectionContainsFilter(env)) {
|
|
19542
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19543
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19544
|
+
target: env.model.getters.getSelectedZones(),
|
|
19545
|
+
});
|
|
19546
|
+
return;
|
|
19547
|
+
}
|
|
19548
|
+
if (cannotCreateFilter(env)) {
|
|
19549
|
+
return;
|
|
19550
|
+
}
|
|
19551
|
+
env.model.selection.selectTableAroundSelection();
|
|
19552
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19553
|
+
const selection = env.model.getters.getSelectedZones();
|
|
19554
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
19555
|
+
}
|
|
19556
|
+
|
|
19557
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
19558
|
+
__proto__: null,
|
|
19559
|
+
hideCols: hideCols,
|
|
19560
|
+
unhideCols: unhideCols,
|
|
19561
|
+
unhideAllCols: unhideAllCols,
|
|
19562
|
+
hideRows: hideRows,
|
|
19563
|
+
unhideRows: unhideRows,
|
|
19564
|
+
unhideAllRows: unhideAllRows,
|
|
19565
|
+
unFreezePane: unFreezePane,
|
|
19566
|
+
freezePane: freezePane,
|
|
19567
|
+
unFreezeRows: unFreezeRows,
|
|
19568
|
+
freezeFirstRow: freezeFirstRow,
|
|
19569
|
+
freezeSecondRow: freezeSecondRow,
|
|
19570
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
19571
|
+
unFreezeCols: unFreezeCols,
|
|
19572
|
+
freezeFirstCol: freezeFirstCol,
|
|
19573
|
+
freezeSecondCol: freezeSecondCol,
|
|
19574
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
19575
|
+
viewGridlines: viewGridlines,
|
|
19576
|
+
viewFormulas: viewFormulas,
|
|
19577
|
+
createRemoveFilter: createRemoveFilter,
|
|
19578
|
+
createRemoveFilterAction: createRemoveFilterAction
|
|
19579
|
+
});
|
|
19580
|
+
|
|
19343
19581
|
const sortRange = {
|
|
19344
19582
|
name: _lt("Sort range"),
|
|
19345
19583
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
@@ -19363,32 +19601,15 @@ const sortDescending = {
|
|
|
19363
19601
|
},
|
|
19364
19602
|
icon: "o-spreadsheet-Icon.SORT_DESCENDING",
|
|
19365
19603
|
};
|
|
19366
|
-
const
|
|
19367
|
-
name: _lt("Create filter"),
|
|
19368
|
-
execute: (env) =>
|
|
19369
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19370
|
-
const selection = env.model.getters.getSelection().zones;
|
|
19371
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
19372
|
-
},
|
|
19373
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
19604
|
+
const addRemoveDataFilter = {
|
|
19605
|
+
name: (env) => SELECTION_CONTAINS_FILTER(env) ? _lt("Remove filter") : _lt("Create filter"),
|
|
19606
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
19374
19607
|
isEnabled: (env) => {
|
|
19375
19608
|
const selectedZones = env.model.getters.getSelectedZones();
|
|
19376
19609
|
return areZonesContinuous(...selectedZones);
|
|
19377
19610
|
},
|
|
19378
19611
|
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19379
19612
|
};
|
|
19380
|
-
const removeDataFilter = {
|
|
19381
|
-
name: _lt("Remove filter"),
|
|
19382
|
-
execute: (env) => {
|
|
19383
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19384
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19385
|
-
sheetId,
|
|
19386
|
-
target: env.model.getters.getSelectedZones(),
|
|
19387
|
-
});
|
|
19388
|
-
},
|
|
19389
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
19390
|
-
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19391
|
-
};
|
|
19392
19613
|
const splitToColumns = {
|
|
19393
19614
|
name: _lt("Split text to columns"),
|
|
19394
19615
|
sequence: 1,
|
|
@@ -19768,242 +19989,6 @@ var ACTION_FORMAT = /*#__PURE__*/Object.freeze({
|
|
|
19768
19989
|
clearFormat: clearFormat
|
|
19769
19990
|
});
|
|
19770
19991
|
|
|
19771
|
-
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
19772
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19773
|
-
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
19774
|
-
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
19775
|
-
if (result.isCancelledBecause(68 /* CommandResult.MergeOverlap */)) {
|
|
19776
|
-
env.raiseError(MergeErrorMessage);
|
|
19777
|
-
}
|
|
19778
|
-
}
|
|
19779
|
-
|
|
19780
|
-
const hideCols = {
|
|
19781
|
-
name: HIDE_COLUMNS_NAME,
|
|
19782
|
-
execute: (env) => {
|
|
19783
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19784
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19785
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19786
|
-
dimension: "COL",
|
|
19787
|
-
elements: columns,
|
|
19788
|
-
});
|
|
19789
|
-
},
|
|
19790
|
-
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
19791
|
-
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
19792
|
-
};
|
|
19793
|
-
const unhideCols = {
|
|
19794
|
-
name: _lt("Unhide columns"),
|
|
19795
|
-
execute: (env) => {
|
|
19796
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19797
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19798
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19799
|
-
dimension: "COL",
|
|
19800
|
-
elements: columns,
|
|
19801
|
-
});
|
|
19802
|
-
},
|
|
19803
|
-
isVisible: (env) => {
|
|
19804
|
-
const hiddenCols = env.model.getters
|
|
19805
|
-
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
19806
|
-
.flat();
|
|
19807
|
-
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
19808
|
-
return currentCols.some((col) => hiddenCols.includes(col));
|
|
19809
|
-
},
|
|
19810
|
-
};
|
|
19811
|
-
const unhideAllCols = {
|
|
19812
|
-
name: _lt("Unhide all columns"),
|
|
19813
|
-
execute: (env) => {
|
|
19814
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19815
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19816
|
-
sheetId,
|
|
19817
|
-
dimension: "COL",
|
|
19818
|
-
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
19819
|
-
});
|
|
19820
|
-
},
|
|
19821
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19822
|
-
};
|
|
19823
|
-
const hideRows = {
|
|
19824
|
-
name: HIDE_ROWS_NAME,
|
|
19825
|
-
execute: (env) => {
|
|
19826
|
-
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
19827
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19828
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19829
|
-
dimension: "ROW",
|
|
19830
|
-
elements: rows,
|
|
19831
|
-
});
|
|
19832
|
-
},
|
|
19833
|
-
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
19834
|
-
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
19835
|
-
};
|
|
19836
|
-
const unhideRows = {
|
|
19837
|
-
name: _lt("Unhide rows"),
|
|
19838
|
-
execute: (env) => {
|
|
19839
|
-
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
19840
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19841
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19842
|
-
dimension: "ROW",
|
|
19843
|
-
elements: columns,
|
|
19844
|
-
});
|
|
19845
|
-
},
|
|
19846
|
-
isVisible: (env) => {
|
|
19847
|
-
const hiddenRows = env.model.getters
|
|
19848
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
19849
|
-
.flat();
|
|
19850
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
19851
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
19852
|
-
},
|
|
19853
|
-
};
|
|
19854
|
-
const unhideAllRows = {
|
|
19855
|
-
name: _lt("Unhide all rows"),
|
|
19856
|
-
execute: (env) => {
|
|
19857
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19858
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19859
|
-
sheetId,
|
|
19860
|
-
dimension: "ROW",
|
|
19861
|
-
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
19862
|
-
});
|
|
19863
|
-
},
|
|
19864
|
-
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19865
|
-
};
|
|
19866
|
-
const unFreezePane = {
|
|
19867
|
-
name: _lt("Unfreeze"),
|
|
19868
|
-
isVisible: (env) => {
|
|
19869
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
19870
|
-
return xSplit + ySplit > 0;
|
|
19871
|
-
},
|
|
19872
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
19873
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19874
|
-
}),
|
|
19875
|
-
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
19876
|
-
};
|
|
19877
|
-
const freezePane = {
|
|
19878
|
-
name: _lt("Freeze"),
|
|
19879
|
-
icon: "o-spreadsheet-Icon.FREEZE",
|
|
19880
|
-
};
|
|
19881
|
-
const unFreezeRows = {
|
|
19882
|
-
name: _lt("No rows"),
|
|
19883
|
-
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
19884
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19885
|
-
}),
|
|
19886
|
-
isReadonlyAllowed: true,
|
|
19887
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
19888
|
-
};
|
|
19889
|
-
const freezeFirstRow = {
|
|
19890
|
-
name: _lt("1 row"),
|
|
19891
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
19892
|
-
isReadonlyAllowed: true,
|
|
19893
|
-
};
|
|
19894
|
-
const freezeSecondRow = {
|
|
19895
|
-
name: _lt("2 rows"),
|
|
19896
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
19897
|
-
isReadonlyAllowed: true,
|
|
19898
|
-
};
|
|
19899
|
-
const freezeCurrentRow = {
|
|
19900
|
-
name: _lt("Up to current row"),
|
|
19901
|
-
execute: (env) => {
|
|
19902
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
19903
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
19904
|
-
},
|
|
19905
|
-
isReadonlyAllowed: true,
|
|
19906
|
-
};
|
|
19907
|
-
const unFreezeCols = {
|
|
19908
|
-
name: _lt("No columns"),
|
|
19909
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
19910
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19911
|
-
}),
|
|
19912
|
-
isReadonlyAllowed: true,
|
|
19913
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
19914
|
-
};
|
|
19915
|
-
const freezeFirstCol = {
|
|
19916
|
-
name: _lt("1 column"),
|
|
19917
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
19918
|
-
isReadonlyAllowed: true,
|
|
19919
|
-
};
|
|
19920
|
-
const freezeSecondCol = {
|
|
19921
|
-
name: _lt("2 columns"),
|
|
19922
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
19923
|
-
isReadonlyAllowed: true,
|
|
19924
|
-
};
|
|
19925
|
-
const freezeCurrentCol = {
|
|
19926
|
-
name: _lt("Up to current column"),
|
|
19927
|
-
execute: (env) => {
|
|
19928
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
19929
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
19930
|
-
},
|
|
19931
|
-
isReadonlyAllowed: true,
|
|
19932
|
-
};
|
|
19933
|
-
const viewGridlines = {
|
|
19934
|
-
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
19935
|
-
? _lt("Hide gridlines")
|
|
19936
|
-
: _lt("Show gridlines"),
|
|
19937
|
-
execute: (env) => {
|
|
19938
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19939
|
-
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
19940
|
-
sheetId,
|
|
19941
|
-
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
19942
|
-
});
|
|
19943
|
-
},
|
|
19944
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
19945
|
-
};
|
|
19946
|
-
const viewFormulas = {
|
|
19947
|
-
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
19948
|
-
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
19949
|
-
isReadonlyAllowed: true,
|
|
19950
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
19951
|
-
};
|
|
19952
|
-
const createRemoveFilter = {
|
|
19953
|
-
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
19954
|
-
isActive: (env) => selectionContainsFilter(env),
|
|
19955
|
-
isEnabled: (env) => !cannotCreateFilter(env),
|
|
19956
|
-
execute: (env) => createRemoveFilterAction(env),
|
|
19957
|
-
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
19958
|
-
};
|
|
19959
|
-
function selectionContainsFilter(env) {
|
|
19960
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19961
|
-
const selectedZones = env.model.getters.getSelectedZones();
|
|
19962
|
-
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
19963
|
-
}
|
|
19964
|
-
function cannotCreateFilter(env) {
|
|
19965
|
-
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
19966
|
-
}
|
|
19967
|
-
function createRemoveFilterAction(env) {
|
|
19968
|
-
if (selectionContainsFilter(env)) {
|
|
19969
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19970
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
19971
|
-
target: env.model.getters.getSelectedZones(),
|
|
19972
|
-
});
|
|
19973
|
-
return;
|
|
19974
|
-
}
|
|
19975
|
-
if (cannotCreateFilter(env)) {
|
|
19976
|
-
return;
|
|
19977
|
-
}
|
|
19978
|
-
env.model.selection.selectTableAroundSelection();
|
|
19979
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19980
|
-
const selection = env.model.getters.getSelectedZones();
|
|
19981
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
19982
|
-
}
|
|
19983
|
-
|
|
19984
|
-
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
19985
|
-
__proto__: null,
|
|
19986
|
-
hideCols: hideCols,
|
|
19987
|
-
unhideCols: unhideCols,
|
|
19988
|
-
unhideAllCols: unhideAllCols,
|
|
19989
|
-
hideRows: hideRows,
|
|
19990
|
-
unhideRows: unhideRows,
|
|
19991
|
-
unhideAllRows: unhideAllRows,
|
|
19992
|
-
unFreezePane: unFreezePane,
|
|
19993
|
-
freezePane: freezePane,
|
|
19994
|
-
unFreezeRows: unFreezeRows,
|
|
19995
|
-
freezeFirstRow: freezeFirstRow,
|
|
19996
|
-
freezeSecondRow: freezeSecondRow,
|
|
19997
|
-
freezeCurrentRow: freezeCurrentRow,
|
|
19998
|
-
unFreezeCols: unFreezeCols,
|
|
19999
|
-
freezeFirstCol: freezeFirstCol,
|
|
20000
|
-
freezeSecondCol: freezeSecondCol,
|
|
20001
|
-
freezeCurrentCol: freezeCurrentCol,
|
|
20002
|
-
viewGridlines: viewGridlines,
|
|
20003
|
-
viewFormulas: viewFormulas,
|
|
20004
|
-
createRemoveFilter: createRemoveFilter
|
|
20005
|
-
});
|
|
20006
|
-
|
|
20007
19992
|
const colMenuRegistry = new MenuItemRegistry();
|
|
20008
19993
|
colMenuRegistry
|
|
20009
19994
|
.add("cut", {
|
|
@@ -20578,12 +20563,8 @@ topbarMenuRegistry
|
|
|
20578
20563
|
sequence: 20,
|
|
20579
20564
|
separator: true,
|
|
20580
20565
|
})
|
|
20581
|
-
.addChild("
|
|
20582
|
-
...
|
|
20583
|
-
sequence: 30,
|
|
20584
|
-
})
|
|
20585
|
-
.addChild("remove_data_filter", ["data"], {
|
|
20586
|
-
...removeDataFilter,
|
|
20566
|
+
.addChild("add_remove_data_filter", ["data"], {
|
|
20567
|
+
...addRemoveDataFilter,
|
|
20587
20568
|
sequence: 30,
|
|
20588
20569
|
});
|
|
20589
20570
|
|
|
@@ -24466,6 +24447,11 @@ class Composer extends owl.Component {
|
|
|
24466
24447
|
}
|
|
24467
24448
|
}
|
|
24468
24449
|
}
|
|
24450
|
+
onContextMenu(ev) {
|
|
24451
|
+
if (this.env.model.getters.getEditionMode() === "inactive") {
|
|
24452
|
+
this.props.onInputContextMenu?.(ev);
|
|
24453
|
+
}
|
|
24454
|
+
}
|
|
24469
24455
|
// ---------------------------------------------------------------------------
|
|
24470
24456
|
// Private
|
|
24471
24457
|
// ---------------------------------------------------------------------------
|
|
@@ -24690,6 +24676,7 @@ Composer.props = {
|
|
|
24690
24676
|
onComposerCellFocused: { type: Function, optional: true },
|
|
24691
24677
|
onComposerContentFocused: Function,
|
|
24692
24678
|
isDefaultFocus: { type: Boolean, optional: true },
|
|
24679
|
+
onInputContextMenu: { type: Function, optional: true },
|
|
24693
24680
|
};
|
|
24694
24681
|
|
|
24695
24682
|
const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
|
|
@@ -24766,6 +24753,7 @@ class GridComposer extends owl.Component {
|
|
|
24766
24753
|
isDefaultFocus: true,
|
|
24767
24754
|
onComposerContentFocused: this.props.onComposerContentFocused,
|
|
24768
24755
|
onComposerCellFocused: this.props.onComposerCellFocused,
|
|
24756
|
+
onInputContextMenu: this.props.onInputContextMenu,
|
|
24769
24757
|
};
|
|
24770
24758
|
}
|
|
24771
24759
|
get containerStyle() {
|
|
@@ -24854,6 +24842,7 @@ GridComposer.props = {
|
|
|
24854
24842
|
onComposerContentFocused: Function,
|
|
24855
24843
|
gridDims: Object,
|
|
24856
24844
|
onComposerCellFocused: Function,
|
|
24845
|
+
onInputContextMenu: Function,
|
|
24857
24846
|
};
|
|
24858
24847
|
|
|
24859
24848
|
const CSS$1 = css /* scss */ `
|
|
@@ -27203,8 +27192,8 @@ class Grid extends owl.Component {
|
|
|
27203
27192
|
else if (this.env.model.getters.getActiveRows().has(row)) {
|
|
27204
27193
|
type = "ROW";
|
|
27205
27194
|
}
|
|
27206
|
-
const { x, y, width
|
|
27207
|
-
this.toggleContextMenu(type, x + width, y +
|
|
27195
|
+
const { x, y, width } = this.env.model.getters.getVisibleRect(lastZone);
|
|
27196
|
+
this.toggleContextMenu(type, this.canvasPosition.x + x + width, this.canvasPosition.y + y);
|
|
27208
27197
|
}
|
|
27209
27198
|
onCellRightClicked(col, row, { x, y }) {
|
|
27210
27199
|
const zones = this.env.model.getters.getSelectedZones();
|
|
@@ -28494,29 +28483,12 @@ function convertWidthFromExcel(width) {
|
|
|
28494
28483
|
return width;
|
|
28495
28484
|
return Math.round((width / WIDTH_FACTOR) * 100) / 100;
|
|
28496
28485
|
}
|
|
28497
|
-
function convertBorderDescr(descr) {
|
|
28498
|
-
if (!descr) {
|
|
28499
|
-
return undefined;
|
|
28500
|
-
}
|
|
28501
|
-
return {
|
|
28502
|
-
style: descr.style,
|
|
28503
|
-
color: { rgb: descr.color },
|
|
28504
|
-
};
|
|
28505
|
-
}
|
|
28506
28486
|
function extractStyle(cell, data) {
|
|
28507
28487
|
let style = {};
|
|
28508
28488
|
if (cell.style) {
|
|
28509
28489
|
style = data.styles[cell.style];
|
|
28510
28490
|
}
|
|
28511
28491
|
const format = extractFormat(cell, data);
|
|
28512
|
-
const exportedBorder = {};
|
|
28513
|
-
if (cell.border) {
|
|
28514
|
-
const border = data.borders[cell.border];
|
|
28515
|
-
exportedBorder.left = convertBorderDescr(border.left);
|
|
28516
|
-
exportedBorder.right = convertBorderDescr(border.right);
|
|
28517
|
-
exportedBorder.bottom = convertBorderDescr(border.bottom);
|
|
28518
|
-
exportedBorder.top = convertBorderDescr(border.top);
|
|
28519
|
-
}
|
|
28520
28492
|
const styles = {
|
|
28521
28493
|
font: {
|
|
28522
28494
|
size: style?.fontSize || DEFAULT_FONT_SIZE,
|
|
@@ -28530,7 +28502,7 @@ function extractStyle(cell, data) {
|
|
|
28530
28502
|
}
|
|
28531
28503
|
: { reservedAttribute: "none" },
|
|
28532
28504
|
numFmt: format ? { format: format, id: 0 /* id not used for export */ } : undefined,
|
|
28533
|
-
border:
|
|
28505
|
+
border: cell.border || 0,
|
|
28534
28506
|
alignment: {
|
|
28535
28507
|
horizontal: style.align,
|
|
28536
28508
|
vertical: style.verticalAlign
|
|
@@ -28552,15 +28524,12 @@ function extractFormat(cell, data) {
|
|
|
28552
28524
|
return undefined;
|
|
28553
28525
|
}
|
|
28554
28526
|
function normalizeStyle(construct, styles) {
|
|
28555
|
-
const { id: fontId } = pushElement(styles["font"], construct.fonts);
|
|
28556
|
-
const { id: fillId } = pushElement(styles["fill"], construct.fills);
|
|
28557
|
-
const { id: borderId } = pushElement(styles["border"], construct.borders);
|
|
28558
28527
|
// Normalize this
|
|
28559
28528
|
const numFmtId = convertFormat(styles["numFmt"], construct.numFmts);
|
|
28560
28529
|
const style = {
|
|
28561
|
-
fontId,
|
|
28562
|
-
fillId,
|
|
28563
|
-
borderId,
|
|
28530
|
+
fontId: pushElement(styles.font, construct.fonts),
|
|
28531
|
+
fillId: pushElement(styles.fill, construct.fills),
|
|
28532
|
+
borderId: styles.border,
|
|
28564
28533
|
numFmtId,
|
|
28565
28534
|
alignment: {
|
|
28566
28535
|
vertical: styles.alignment.vertical,
|
|
@@ -28568,8 +28537,7 @@ function normalizeStyle(construct, styles) {
|
|
|
28568
28537
|
wrapText: styles.alignment.wrapText,
|
|
28569
28538
|
},
|
|
28570
28539
|
};
|
|
28571
|
-
|
|
28572
|
-
return id;
|
|
28540
|
+
return pushElement(style, construct.styles);
|
|
28573
28541
|
}
|
|
28574
28542
|
function convertFormat(format, numFmtStructure) {
|
|
28575
28543
|
if (!format) {
|
|
@@ -28577,8 +28545,7 @@ function convertFormat(format, numFmtStructure) {
|
|
|
28577
28545
|
}
|
|
28578
28546
|
let formatId = XLSX_FORMAT_MAP[format.format];
|
|
28579
28547
|
if (!formatId) {
|
|
28580
|
-
|
|
28581
|
-
formatId = id + FIRST_NUMFMT_ID;
|
|
28548
|
+
formatId = pushElement(format, numFmtStructure) + FIRST_NUMFMT_ID;
|
|
28582
28549
|
}
|
|
28583
28550
|
return formatId;
|
|
28584
28551
|
}
|
|
@@ -28603,20 +28570,15 @@ function addRelsToFile(relsFiles, path, rel) {
|
|
|
28603
28570
|
return id;
|
|
28604
28571
|
}
|
|
28605
28572
|
function pushElement(property, propertyList) {
|
|
28606
|
-
|
|
28607
|
-
|
|
28608
|
-
|
|
28573
|
+
let len = propertyList.length;
|
|
28574
|
+
const operator = typeof property === "object" ? deepEquals : (a, b) => a === b;
|
|
28575
|
+
for (let i = 0; i < len; i++) {
|
|
28576
|
+
if (operator(property, propertyList[i])) {
|
|
28577
|
+
return i;
|
|
28609
28578
|
}
|
|
28610
28579
|
}
|
|
28611
|
-
|
|
28612
|
-
|
|
28613
|
-
propertyList.push(property);
|
|
28614
|
-
elemId = propertyList.length - 1;
|
|
28615
|
-
}
|
|
28616
|
-
return {
|
|
28617
|
-
id: elemId,
|
|
28618
|
-
list: propertyList,
|
|
28619
|
-
};
|
|
28580
|
+
propertyList[propertyList.length] = property;
|
|
28581
|
+
return propertyList.length - 1;
|
|
28620
28582
|
}
|
|
28621
28583
|
const chartIds = [];
|
|
28622
28584
|
/**
|
|
@@ -29337,7 +29299,25 @@ function parseXML(xmlString, mimeType = "text/xml") {
|
|
|
29337
29299
|
}
|
|
29338
29300
|
return document;
|
|
29339
29301
|
}
|
|
29340
|
-
function
|
|
29302
|
+
function convertBorderDescr(descr) {
|
|
29303
|
+
if (!descr) {
|
|
29304
|
+
return undefined;
|
|
29305
|
+
}
|
|
29306
|
+
return {
|
|
29307
|
+
style: descr.style,
|
|
29308
|
+
color: { rgb: descr.color },
|
|
29309
|
+
};
|
|
29310
|
+
}
|
|
29311
|
+
function getDefaultXLSXStructure(data) {
|
|
29312
|
+
const xlsxBorders = Object.values(data.borders).map((border) => {
|
|
29313
|
+
return {
|
|
29314
|
+
left: convertBorderDescr(border.left),
|
|
29315
|
+
right: convertBorderDescr(border.right),
|
|
29316
|
+
bottom: convertBorderDescr(border.bottom),
|
|
29317
|
+
top: convertBorderDescr(border.top),
|
|
29318
|
+
};
|
|
29319
|
+
});
|
|
29320
|
+
const borders = [{}, ...xlsxBorders];
|
|
29341
29321
|
return {
|
|
29342
29322
|
relsFiles: [],
|
|
29343
29323
|
sharedStrings: [],
|
|
@@ -29360,7 +29340,7 @@ function getDefaultXLSXStructure() {
|
|
|
29360
29340
|
},
|
|
29361
29341
|
],
|
|
29362
29342
|
fills: [{ reservedAttribute: "none" }, { reservedAttribute: "gray125" }],
|
|
29363
|
-
borders
|
|
29343
|
+
borders,
|
|
29364
29344
|
numFmts: [],
|
|
29365
29345
|
dxfs: [],
|
|
29366
29346
|
};
|
|
@@ -33425,7 +33405,17 @@ class FiltersPlugin extends CorePlugin {
|
|
|
33425
33405
|
}
|
|
33426
33406
|
}
|
|
33427
33407
|
exportForExcel(data) {
|
|
33428
|
-
|
|
33408
|
+
for (const sheet of data.sheets) {
|
|
33409
|
+
for (const filterTable of this.getFilterTables(sheet.id)) {
|
|
33410
|
+
if (zoneToDimension(filterTable.zone).numberOfRows === 1) {
|
|
33411
|
+
continue;
|
|
33412
|
+
}
|
|
33413
|
+
sheet.filterTables.push({
|
|
33414
|
+
range: zoneToXc(filterTable.zone),
|
|
33415
|
+
filters: [],
|
|
33416
|
+
});
|
|
33417
|
+
}
|
|
33418
|
+
}
|
|
33429
33419
|
}
|
|
33430
33420
|
}
|
|
33431
33421
|
|
|
@@ -36719,7 +36709,9 @@ class Evaluator {
|
|
|
36719
36709
|
this.blockedArrayFormulas = new Set();
|
|
36720
36710
|
this.spreadingRelations = new SpreadingRelation();
|
|
36721
36711
|
this.formulaDependencies = lazy(() => {
|
|
36722
|
-
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
36712
|
+
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
36713
|
+
.filter((range) => !range.invalidSheetName && !range.invalidXc)
|
|
36714
|
+
.map((range) => ({
|
|
36723
36715
|
data: positionId,
|
|
36724
36716
|
boundingBox: {
|
|
36725
36717
|
zone: range.zone,
|
|
@@ -45254,13 +45246,14 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45254
45246
|
}
|
|
45255
45247
|
}
|
|
45256
45248
|
handleEvent(event) {
|
|
45249
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
45257
45250
|
if (event.options.scrollIntoView) {
|
|
45258
45251
|
let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
|
|
45259
45252
|
if (event.mode === "updateAnchor") {
|
|
45260
45253
|
const oldZone = event.previousAnchor.zone;
|
|
45261
45254
|
const newZone = event.anchor.zone;
|
|
45262
45255
|
// altering a zone should not move the viewport in a dimension that wasn't changed
|
|
45263
|
-
const { top, bottom, left, right } = this.
|
|
45256
|
+
const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
|
|
45264
45257
|
if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
|
|
45265
45258
|
col = left > col || col > right ? left : col;
|
|
45266
45259
|
}
|
|
@@ -45268,7 +45261,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45268
45261
|
row = top > row || row > bottom ? top : row;
|
|
45269
45262
|
}
|
|
45270
45263
|
}
|
|
45271
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
45272
45264
|
col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
|
|
45273
45265
|
row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
|
|
45274
45266
|
this.refreshViewport(this.getters.getActiveSheetId(), { col, row });
|
|
@@ -45294,16 +45286,16 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45294
45286
|
this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
|
|
45295
45287
|
break;
|
|
45296
45288
|
case "SHIFT_VIEWPORT_DOWN":
|
|
45297
|
-
const { top } = this.getActiveMainViewport();
|
|
45298
45289
|
const sheetId = this.getters.getActiveSheetId();
|
|
45299
|
-
const
|
|
45300
|
-
this.
|
|
45290
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
45291
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
45292
|
+
this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
|
|
45301
45293
|
break;
|
|
45302
45294
|
case "SHIFT_VIEWPORT_UP": {
|
|
45303
|
-
const { top } = this.getActiveMainViewport();
|
|
45304
45295
|
const sheetId = this.getters.getActiveSheetId();
|
|
45305
|
-
const
|
|
45306
|
-
this.
|
|
45296
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
45297
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
45298
|
+
this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
|
|
45307
45299
|
break;
|
|
45308
45300
|
}
|
|
45309
45301
|
case "REMOVE_COLUMNS_ROWS":
|
|
@@ -45665,17 +45657,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45665
45657
|
const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
|
|
45666
45658
|
Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
|
|
45667
45659
|
}
|
|
45668
|
-
/**
|
|
45669
|
-
* Clip the vertical offset within the allowed range.
|
|
45670
|
-
* Not above the sheet, nor below the sheet.
|
|
45671
|
-
*/
|
|
45672
|
-
clipOffsetY(offsetY) {
|
|
45673
|
-
const { height } = this.getMainViewportRect();
|
|
45674
|
-
const maxOffset = height - this.sheetViewHeight;
|
|
45675
|
-
offsetY = Math.min(offsetY, maxOffset);
|
|
45676
|
-
offsetY = Math.max(offsetY, 0);
|
|
45677
|
-
return offsetY;
|
|
45678
|
-
}
|
|
45679
45660
|
getViewportOffset(sheetId) {
|
|
45680
45661
|
return {
|
|
45681
45662
|
x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
|
|
@@ -45731,12 +45712,15 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
45731
45712
|
* viewport top.
|
|
45732
45713
|
*/
|
|
45733
45714
|
shiftVertically(offset) {
|
|
45734
|
-
const
|
|
45715
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
45716
|
+
const { top } = this.getMainInternalViewport(sheetId);
|
|
45735
45717
|
const { scrollX } = this.getActiveSheetScrollInfo();
|
|
45736
45718
|
this.setSheetViewOffset(scrollX, offset);
|
|
45737
45719
|
const { anchor } = this.getters.getSelection();
|
|
45738
|
-
|
|
45739
|
-
|
|
45720
|
+
if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
|
|
45721
|
+
const deltaRow = this.getMainInternalViewport(sheetId).top - top;
|
|
45722
|
+
this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
|
|
45723
|
+
}
|
|
45740
45724
|
}
|
|
45741
45725
|
getVisibleFigures() {
|
|
45742
45726
|
const sheetId = this.getters.getActiveSheetId();
|
|
@@ -46752,7 +46736,6 @@ css /* scss */ `
|
|
|
46752
46736
|
cursor: pointer;
|
|
46753
46737
|
}
|
|
46754
46738
|
`;
|
|
46755
|
-
let tKey = 1;
|
|
46756
46739
|
class SpreadsheetDashboard extends owl.Component {
|
|
46757
46740
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
46758
46741
|
static components = {
|
|
@@ -46830,13 +46813,9 @@ class SpreadsheetDashboard extends owl.Component {
|
|
|
46830
46813
|
coordinates: rect,
|
|
46831
46814
|
position: { col, row },
|
|
46832
46815
|
action,
|
|
46833
|
-
// we can't rely on position only because a row or a column could
|
|
46834
|
-
// be inserted at any time.
|
|
46835
|
-
tKey: `${tKey}-${col}-${row}`,
|
|
46836
46816
|
});
|
|
46837
46817
|
}
|
|
46838
46818
|
}
|
|
46839
|
-
tKey++;
|
|
46840
46819
|
return cells;
|
|
46841
46820
|
}
|
|
46842
46821
|
getClickableAction(position) {
|
|
@@ -49993,8 +49972,7 @@ function addContent(content, sharedStrings, forceString = false) {
|
|
|
49993
49972
|
attrs.push(["t", "b"]);
|
|
49994
49973
|
}
|
|
49995
49974
|
else if (forceString || !isNumber(value, DEFAULT_LOCALE)) {
|
|
49996
|
-
|
|
49997
|
-
value = id.toString();
|
|
49975
|
+
value = pushElement(content, sharedStrings);
|
|
49998
49976
|
attrs.push(["t", "s"]);
|
|
49999
49977
|
}
|
|
50000
49978
|
return { attrs, node: escapeXml /*xml*/ `<v>${value}</v>` };
|
|
@@ -50119,8 +50097,7 @@ function addCellIsRule(cf, rule, dxfs) {
|
|
|
50119
50097
|
if (rule.style.fillColor) {
|
|
50120
50098
|
dxf.fill = { fgColor: { rgb: rule.style.fillColor } };
|
|
50121
50099
|
}
|
|
50122
|
-
|
|
50123
|
-
ruleAttributes.push(["dxfId", id]);
|
|
50100
|
+
ruleAttributes.push(["dxfId", pushElement(dxf, dxfs)]);
|
|
50124
50101
|
return escapeXml /*xml*/ `
|
|
50125
50102
|
<conditionalFormatting sqref="${cf.ranges.join(" ")}">
|
|
50126
50103
|
<cfRule ${formatAttributes(ruleAttributes)}>
|
|
@@ -50929,7 +50906,7 @@ function addSheetViews(sheet) {
|
|
|
50929
50906
|
*/
|
|
50930
50907
|
function getXLSX(data) {
|
|
50931
50908
|
const files = [];
|
|
50932
|
-
const construct = getDefaultXLSXStructure();
|
|
50909
|
+
const construct = getDefaultXLSXStructure(data);
|
|
50933
50910
|
files.push(createWorkbook(data, construct));
|
|
50934
50911
|
files.push(...createWorksheets(data, construct));
|
|
50935
50912
|
files.push(createStylesSheet(construct));
|
|
@@ -51784,6 +51761,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
51784
51761
|
exports.tokenize = tokenize;
|
|
51785
51762
|
|
|
51786
51763
|
|
|
51787
|
-
__info__.version = '16.4.
|
|
51788
|
-
__info__.date = '2024-04-
|
|
51789
|
-
__info__.hash = '
|
|
51764
|
+
__info__.version = '16.4.30';
|
|
51765
|
+
__info__.date = '2024-04-18T16:39:04.255Z';
|
|
51766
|
+
__info__.hash = '39b015c';
|