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