@odoo/o-spreadsheet 17.2.28 → 17.2.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 +67 -38
- package/dist/o-spreadsheet.d.ts +1 -0
- package/dist/o-spreadsheet.esm.js +67 -38
- package/dist/o-spreadsheet.iife.js +67 -38
- package/dist/o-spreadsheet.iife.min.js +264 -265
- package/dist/o_spreadsheet.xml +3 -3
- package/package.json +1 -1
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
5
5
|
* @see https://github.com/odoo/o-spreadsheet
|
|
6
|
-
* @version 17.2.
|
|
7
|
-
* @date 2024-
|
|
8
|
-
* @hash
|
|
6
|
+
* @version 17.2.30
|
|
7
|
+
* @date 2024-12-19T07:48:16.226Z
|
|
8
|
+
* @hash 9a9ae31
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
@@ -626,6 +626,7 @@ function removeFalsyAttributes(obj) {
|
|
|
626
626
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes
|
|
627
627
|
*/
|
|
628
628
|
const whiteSpaceSpecialCharacters = [
|
|
629
|
+
" ",
|
|
629
630
|
"\t",
|
|
630
631
|
"\f",
|
|
631
632
|
"\v",
|
|
@@ -640,17 +641,15 @@ const whiteSpaceSpecialCharacters = [
|
|
|
640
641
|
String.fromCharCode(parseInt("3000", 16)),
|
|
641
642
|
String.fromCharCode(parseInt("feff", 16)),
|
|
642
643
|
];
|
|
643
|
-
const whiteSpaceRegexp = new RegExp(whiteSpaceSpecialCharacters.join("|")
|
|
644
|
+
const whiteSpaceRegexp = new RegExp(whiteSpaceSpecialCharacters.join("|"), "g");
|
|
645
|
+
const newLineRegexp = /(\r\n|\r)/g;
|
|
644
646
|
/**
|
|
645
|
-
* Replace all
|
|
646
|
-
* different newlines types by \n.
|
|
647
|
+
* Replace all different newlines characters by \n
|
|
647
648
|
*/
|
|
648
|
-
function
|
|
649
|
+
function replaceNewLines(text) {
|
|
649
650
|
if (!text)
|
|
650
651
|
return "";
|
|
651
|
-
|
|
652
|
-
return text;
|
|
653
|
-
return text.replace(whiteSpaceRegexp, (match, newLine) => (newLine ? NEWLINE : " "));
|
|
652
|
+
return text.replace(newLineRegexp, NEWLINE);
|
|
654
653
|
}
|
|
655
654
|
/**
|
|
656
655
|
* Determine if the numbers are consecutive.
|
|
@@ -5163,7 +5162,7 @@ class BorderClipboardHandler extends AbstractCellClipboardHandler {
|
|
|
5163
5162
|
const POSTFIX_UNARY_OPERATORS = ["%"];
|
|
5164
5163
|
const OPERATORS = "+,-,*,/,:,=,<>,>=,>,<=,<,^,&".split(",").concat(POSTFIX_UNARY_OPERATORS);
|
|
5165
5164
|
function tokenize(str, locale = DEFAULT_LOCALE) {
|
|
5166
|
-
str =
|
|
5165
|
+
str = replaceNewLines(str);
|
|
5167
5166
|
const chars = new TokenizingChars(str);
|
|
5168
5167
|
const result = [];
|
|
5169
5168
|
while (!chars.isOver()) {
|
|
@@ -5310,12 +5309,12 @@ function tokenizeSpace(chars) {
|
|
|
5310
5309
|
if (length) {
|
|
5311
5310
|
return { type: "SPACE", value: NEWLINE.repeat(length) };
|
|
5312
5311
|
}
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
chars.shift();
|
|
5312
|
+
let spaces = "";
|
|
5313
|
+
while (chars.current && chars.current.match(whiteSpaceRegexp)) {
|
|
5314
|
+
spaces += chars.shift();
|
|
5316
5315
|
}
|
|
5317
|
-
if (
|
|
5318
|
-
return { type: "SPACE", value:
|
|
5316
|
+
if (spaces) {
|
|
5317
|
+
return { type: "SPACE", value: spaces };
|
|
5319
5318
|
}
|
|
5320
5319
|
return null;
|
|
5321
5320
|
}
|
|
@@ -18751,6 +18750,18 @@ const TEXT = {
|
|
|
18751
18750
|
},
|
|
18752
18751
|
isExported: true,
|
|
18753
18752
|
};
|
|
18753
|
+
// -----------------------------------------------------------------------------
|
|
18754
|
+
// VALUE
|
|
18755
|
+
// -----------------------------------------------------------------------------
|
|
18756
|
+
const VALUE = {
|
|
18757
|
+
description: _t("Converts a string to a numeric value."),
|
|
18758
|
+
args: [arg("value (number)", _t("the string to be converted"))],
|
|
18759
|
+
returns: ["NUMBER"],
|
|
18760
|
+
compute: function (value) {
|
|
18761
|
+
return toNumber(value, this.locale);
|
|
18762
|
+
},
|
|
18763
|
+
isExported: true,
|
|
18764
|
+
};
|
|
18754
18765
|
|
|
18755
18766
|
var text = /*#__PURE__*/Object.freeze({
|
|
18756
18767
|
__proto__: null,
|
|
@@ -18773,7 +18784,8 @@ var text = /*#__PURE__*/Object.freeze({
|
|
|
18773
18784
|
TEXT: TEXT,
|
|
18774
18785
|
TEXTJOIN: TEXTJOIN,
|
|
18775
18786
|
TRIM: TRIM,
|
|
18776
|
-
UPPER: UPPER
|
|
18787
|
+
UPPER: UPPER,
|
|
18788
|
+
VALUE: VALUE
|
|
18777
18789
|
});
|
|
18778
18790
|
|
|
18779
18791
|
// -----------------------------------------------------------------------------
|
|
@@ -33515,6 +33527,7 @@ class FiguresContainer extends owl.Component {
|
|
|
33515
33527
|
draggedFigure: undefined,
|
|
33516
33528
|
horizontalSnap: undefined,
|
|
33517
33529
|
verticalSnap: undefined,
|
|
33530
|
+
cancelDnd: undefined,
|
|
33518
33531
|
});
|
|
33519
33532
|
setup() {
|
|
33520
33533
|
owl.onMounted(() => {
|
|
@@ -33527,12 +33540,28 @@ class FiguresContainer extends owl.Component {
|
|
|
33527
33540
|
// new rendering
|
|
33528
33541
|
this.render();
|
|
33529
33542
|
});
|
|
33543
|
+
owl.onWillUpdateProps(() => {
|
|
33544
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
33545
|
+
const draggedFigureId = this.dnd.draggedFigure?.id;
|
|
33546
|
+
if (draggedFigureId && !this.env.model.getters.getFigure(sheetId, draggedFigureId)) {
|
|
33547
|
+
if (this.dnd.cancelDnd) {
|
|
33548
|
+
this.dnd.cancelDnd();
|
|
33549
|
+
}
|
|
33550
|
+
this.dnd.draggedFigure = undefined;
|
|
33551
|
+
this.dnd.horizontalSnap = undefined;
|
|
33552
|
+
this.dnd.verticalSnap = undefined;
|
|
33553
|
+
this.dnd.cancelDnd = undefined;
|
|
33554
|
+
}
|
|
33555
|
+
});
|
|
33530
33556
|
}
|
|
33531
33557
|
getVisibleFigures() {
|
|
33532
33558
|
const visibleFigures = this.env.model.getters.getVisibleFigures();
|
|
33533
33559
|
if (this.dnd.draggedFigure &&
|
|
33534
33560
|
!visibleFigures.some((figure) => figure.id === this.dnd.draggedFigure?.id)) {
|
|
33535
|
-
|
|
33561
|
+
const draggedFigure = this.env.model.getters.getFigure(this.env.model.getters.getActiveSheetId(), this.dnd.draggedFigure?.id);
|
|
33562
|
+
if (draggedFigure) {
|
|
33563
|
+
visibleFigures.push(draggedFigure);
|
|
33564
|
+
}
|
|
33536
33565
|
}
|
|
33537
33566
|
return visibleFigures;
|
|
33538
33567
|
}
|
|
@@ -33651,7 +33680,7 @@ class FiguresContainer extends owl.Component {
|
|
|
33651
33680
|
this.dnd.verticalSnap = undefined;
|
|
33652
33681
|
this.env.model.dispatch("UPDATE_FIGURE", { sheetId, id: figure.id, x, y });
|
|
33653
33682
|
};
|
|
33654
|
-
startDnd(onMouseMove, onMouseUp);
|
|
33683
|
+
this.dnd.cancelDnd = startDnd(onMouseMove, onMouseUp);
|
|
33655
33684
|
}
|
|
33656
33685
|
/**
|
|
33657
33686
|
* Initialize the resize of a figure with mouse movements
|
|
@@ -33699,7 +33728,7 @@ class FiguresContainer extends owl.Component {
|
|
|
33699
33728
|
this.dnd.horizontalSnap = undefined;
|
|
33700
33729
|
this.dnd.verticalSnap = undefined;
|
|
33701
33730
|
};
|
|
33702
|
-
startDnd(onMouseMove, onMouseUp);
|
|
33731
|
+
this.dnd.cancelDnd = startDnd(onMouseMove, onMouseUp);
|
|
33703
33732
|
}
|
|
33704
33733
|
getOtherFigures(figId) {
|
|
33705
33734
|
return this.getVisibleFigures().filter((f) => f.id !== figId);
|
|
@@ -37659,7 +37688,7 @@ function extractStyle(cell, data) {
|
|
|
37659
37688
|
vertical: style.verticalAlign
|
|
37660
37689
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
37661
37690
|
: undefined,
|
|
37662
|
-
wrapText: style.wrapping === "wrap",
|
|
37691
|
+
wrapText: style.wrapping === "wrap" || cell.content?.includes(NEWLINE) ? true : undefined,
|
|
37663
37692
|
},
|
|
37664
37693
|
};
|
|
37665
37694
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -38111,9 +38140,8 @@ function convertRows(sheet, numberOfRows, headerGroups) {
|
|
|
38111
38140
|
}
|
|
38112
38141
|
return rows;
|
|
38113
38142
|
}
|
|
38114
|
-
/** Remove newlines (\n) in shared strings, We do not support them */
|
|
38115
38143
|
function convertSharedStrings(xlsxSharedStrings) {
|
|
38116
|
-
return xlsxSharedStrings.map(
|
|
38144
|
+
return xlsxSharedStrings.map(replaceNewLines);
|
|
38117
38145
|
}
|
|
38118
38146
|
function convertCells(sheet, data, sheetDims, warningManager) {
|
|
38119
38147
|
const cells = {};
|
|
@@ -38955,15 +38983,10 @@ class XlsxMiscExtractor extends XlsxBaseExtractor {
|
|
|
38955
38983
|
getSharedStrings() {
|
|
38956
38984
|
return this.mapOnElements({ parent: this.rootFile.file.xml, query: "si" }, (ssElement) => {
|
|
38957
38985
|
// Shared string can either be a simple text, or a rich text (text with formatting, possibly in multiple parts)
|
|
38958
|
-
if (ssElement.children[0].tagName === "t") {
|
|
38959
|
-
return this.extractTextContent(ssElement) || "";
|
|
38960
|
-
}
|
|
38961
38986
|
// We don't support rich text formatting, we'll only extract the text
|
|
38962
|
-
|
|
38963
|
-
return this.
|
|
38964
|
-
|
|
38965
|
-
}).join("");
|
|
38966
|
-
}
|
|
38987
|
+
return this.mapOnElements({ parent: ssElement, query: "t" }, (textElement) => {
|
|
38988
|
+
return this.extractTextContent(textElement) || "";
|
|
38989
|
+
}).join("");
|
|
38967
38990
|
});
|
|
38968
38991
|
}
|
|
38969
38992
|
}
|
|
@@ -41857,7 +41880,7 @@ class CellPlugin extends CorePlugin {
|
|
|
41857
41880
|
const before = this.getters.getCell({ sheetId, col, row });
|
|
41858
41881
|
const hasContent = "content" in after || "formula" in after;
|
|
41859
41882
|
// Compute the new cell properties
|
|
41860
|
-
const afterContent = hasContent ?
|
|
41883
|
+
const afterContent = hasContent ? replaceNewLines(after?.content) : before?.content || "";
|
|
41861
41884
|
let style;
|
|
41862
41885
|
if (after.style !== undefined) {
|
|
41863
41886
|
style = after.style || undefined;
|
|
@@ -54179,6 +54202,7 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
54179
54202
|
break;
|
|
54180
54203
|
case "DELETE_SHEET":
|
|
54181
54204
|
this.cleanViewports();
|
|
54205
|
+
this.sheetsWithDirtyViewports.delete(cmd.sheetId);
|
|
54182
54206
|
break;
|
|
54183
54207
|
case "ACTIVATE_SHEET":
|
|
54184
54208
|
this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
|
|
@@ -56149,7 +56173,7 @@ class ActionButton extends owl.Component {
|
|
|
56149
56173
|
setup() {
|
|
56150
56174
|
owl.onWillUpdateProps((nextProps) => {
|
|
56151
56175
|
if (nextProps.action !== this.props.action) {
|
|
56152
|
-
this.actionButton = createAction(
|
|
56176
|
+
this.actionButton = createAction(nextProps.action);
|
|
56153
56177
|
}
|
|
56154
56178
|
});
|
|
56155
56179
|
}
|
|
@@ -56416,7 +56440,6 @@ css /* scss */ `
|
|
|
56416
56440
|
height: fit-content;
|
|
56417
56441
|
margin-top: -1px;
|
|
56418
56442
|
border: 1px solid;
|
|
56419
|
-
z-index: ${ComponentsImportance.TopBarComposer};
|
|
56420
56443
|
|
|
56421
56444
|
.o-composer:empty:not(:focus):not(.active)::before {
|
|
56422
56445
|
content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
|
|
@@ -56458,6 +56481,7 @@ class TopBarComposer extends owl.Component {
|
|
|
56458
56481
|
}
|
|
56459
56482
|
return cssPropertiesToCss({
|
|
56460
56483
|
"border-color": SELECTION_BORDER_COLOR,
|
|
56484
|
+
"z-index": String(ComponentsImportance.TopBarComposer),
|
|
56461
56485
|
});
|
|
56462
56486
|
}
|
|
56463
56487
|
get delimitation() {
|
|
@@ -60241,7 +60265,12 @@ function createSharedStrings(strings) {
|
|
|
60241
60265
|
["count", strings.length],
|
|
60242
60266
|
["uniqueCount", strings.length],
|
|
60243
60267
|
];
|
|
60244
|
-
const stringNodes = strings.map((string) =>
|
|
60268
|
+
const stringNodes = strings.map((string) => {
|
|
60269
|
+
if (string.trim() !== string) {
|
|
60270
|
+
return escapeXml /*xml*/ `<si><t xml:space="preserve">${string}</t></si>`;
|
|
60271
|
+
}
|
|
60272
|
+
return escapeXml /*xml*/ `<si><t>${string}</t></si>`;
|
|
60273
|
+
});
|
|
60245
60274
|
const xml = escapeXml /*xml*/ `
|
|
60246
60275
|
<sst ${formatAttributes(namespaces)}>
|
|
60247
60276
|
${joinXmlNodes(stringNodes)}
|
|
@@ -61006,6 +61035,6 @@ exports.tokenColors = tokenColors;
|
|
|
61006
61035
|
exports.tokenize = tokenize;
|
|
61007
61036
|
|
|
61008
61037
|
|
|
61009
|
-
__info__.version = "17.2.
|
|
61010
|
-
__info__.date = "2024-
|
|
61011
|
-
__info__.hash = "
|
|
61038
|
+
__info__.version = "17.2.30";
|
|
61039
|
+
__info__.date = "2024-12-19T07:48:16.226Z";
|
|
61040
|
+
__info__.hash = "9a9ae31";
|
package/dist/o-spreadsheet.d.ts
CHANGED
|
@@ -7311,6 +7311,7 @@ interface DndState {
|
|
|
7311
7311
|
draggedFigure?: Figure;
|
|
7312
7312
|
horizontalSnap?: Snap<HFigureAxisType>;
|
|
7313
7313
|
verticalSnap?: Snap<VFigureAxisType>;
|
|
7314
|
+
cancelDnd: (() => void) | undefined;
|
|
7314
7315
|
}
|
|
7315
7316
|
/**
|
|
7316
7317
|
* Each figure ⭐ is positioned inside a container `div` placed and sized
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
5
5
|
* @see https://github.com/odoo/o-spreadsheet
|
|
6
|
-
* @version 17.2.
|
|
7
|
-
* @date 2024-
|
|
8
|
-
* @hash
|
|
6
|
+
* @version 17.2.30
|
|
7
|
+
* @date 2024-12-19T07:48:16.226Z
|
|
8
|
+
* @hash 9a9ae31
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw } from '@odoo/owl';
|
|
@@ -624,6 +624,7 @@ function removeFalsyAttributes(obj) {
|
|
|
624
624
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes
|
|
625
625
|
*/
|
|
626
626
|
const whiteSpaceSpecialCharacters = [
|
|
627
|
+
" ",
|
|
627
628
|
"\t",
|
|
628
629
|
"\f",
|
|
629
630
|
"\v",
|
|
@@ -638,17 +639,15 @@ const whiteSpaceSpecialCharacters = [
|
|
|
638
639
|
String.fromCharCode(parseInt("3000", 16)),
|
|
639
640
|
String.fromCharCode(parseInt("feff", 16)),
|
|
640
641
|
];
|
|
641
|
-
const whiteSpaceRegexp = new RegExp(whiteSpaceSpecialCharacters.join("|")
|
|
642
|
+
const whiteSpaceRegexp = new RegExp(whiteSpaceSpecialCharacters.join("|"), "g");
|
|
643
|
+
const newLineRegexp = /(\r\n|\r)/g;
|
|
642
644
|
/**
|
|
643
|
-
* Replace all
|
|
644
|
-
* different newlines types by \n.
|
|
645
|
+
* Replace all different newlines characters by \n
|
|
645
646
|
*/
|
|
646
|
-
function
|
|
647
|
+
function replaceNewLines(text) {
|
|
647
648
|
if (!text)
|
|
648
649
|
return "";
|
|
649
|
-
|
|
650
|
-
return text;
|
|
651
|
-
return text.replace(whiteSpaceRegexp, (match, newLine) => (newLine ? NEWLINE : " "));
|
|
650
|
+
return text.replace(newLineRegexp, NEWLINE);
|
|
652
651
|
}
|
|
653
652
|
/**
|
|
654
653
|
* Determine if the numbers are consecutive.
|
|
@@ -5161,7 +5160,7 @@ class BorderClipboardHandler extends AbstractCellClipboardHandler {
|
|
|
5161
5160
|
const POSTFIX_UNARY_OPERATORS = ["%"];
|
|
5162
5161
|
const OPERATORS = "+,-,*,/,:,=,<>,>=,>,<=,<,^,&".split(",").concat(POSTFIX_UNARY_OPERATORS);
|
|
5163
5162
|
function tokenize(str, locale = DEFAULT_LOCALE) {
|
|
5164
|
-
str =
|
|
5163
|
+
str = replaceNewLines(str);
|
|
5165
5164
|
const chars = new TokenizingChars(str);
|
|
5166
5165
|
const result = [];
|
|
5167
5166
|
while (!chars.isOver()) {
|
|
@@ -5308,12 +5307,12 @@ function tokenizeSpace(chars) {
|
|
|
5308
5307
|
if (length) {
|
|
5309
5308
|
return { type: "SPACE", value: NEWLINE.repeat(length) };
|
|
5310
5309
|
}
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
chars.shift();
|
|
5310
|
+
let spaces = "";
|
|
5311
|
+
while (chars.current && chars.current.match(whiteSpaceRegexp)) {
|
|
5312
|
+
spaces += chars.shift();
|
|
5314
5313
|
}
|
|
5315
|
-
if (
|
|
5316
|
-
return { type: "SPACE", value:
|
|
5314
|
+
if (spaces) {
|
|
5315
|
+
return { type: "SPACE", value: spaces };
|
|
5317
5316
|
}
|
|
5318
5317
|
return null;
|
|
5319
5318
|
}
|
|
@@ -18749,6 +18748,18 @@ const TEXT = {
|
|
|
18749
18748
|
},
|
|
18750
18749
|
isExported: true,
|
|
18751
18750
|
};
|
|
18751
|
+
// -----------------------------------------------------------------------------
|
|
18752
|
+
// VALUE
|
|
18753
|
+
// -----------------------------------------------------------------------------
|
|
18754
|
+
const VALUE = {
|
|
18755
|
+
description: _t("Converts a string to a numeric value."),
|
|
18756
|
+
args: [arg("value (number)", _t("the string to be converted"))],
|
|
18757
|
+
returns: ["NUMBER"],
|
|
18758
|
+
compute: function (value) {
|
|
18759
|
+
return toNumber(value, this.locale);
|
|
18760
|
+
},
|
|
18761
|
+
isExported: true,
|
|
18762
|
+
};
|
|
18752
18763
|
|
|
18753
18764
|
var text = /*#__PURE__*/Object.freeze({
|
|
18754
18765
|
__proto__: null,
|
|
@@ -18771,7 +18782,8 @@ var text = /*#__PURE__*/Object.freeze({
|
|
|
18771
18782
|
TEXT: TEXT,
|
|
18772
18783
|
TEXTJOIN: TEXTJOIN,
|
|
18773
18784
|
TRIM: TRIM,
|
|
18774
|
-
UPPER: UPPER
|
|
18785
|
+
UPPER: UPPER,
|
|
18786
|
+
VALUE: VALUE
|
|
18775
18787
|
});
|
|
18776
18788
|
|
|
18777
18789
|
// -----------------------------------------------------------------------------
|
|
@@ -33513,6 +33525,7 @@ class FiguresContainer extends Component {
|
|
|
33513
33525
|
draggedFigure: undefined,
|
|
33514
33526
|
horizontalSnap: undefined,
|
|
33515
33527
|
verticalSnap: undefined,
|
|
33528
|
+
cancelDnd: undefined,
|
|
33516
33529
|
});
|
|
33517
33530
|
setup() {
|
|
33518
33531
|
onMounted(() => {
|
|
@@ -33525,12 +33538,28 @@ class FiguresContainer extends Component {
|
|
|
33525
33538
|
// new rendering
|
|
33526
33539
|
this.render();
|
|
33527
33540
|
});
|
|
33541
|
+
onWillUpdateProps(() => {
|
|
33542
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
33543
|
+
const draggedFigureId = this.dnd.draggedFigure?.id;
|
|
33544
|
+
if (draggedFigureId && !this.env.model.getters.getFigure(sheetId, draggedFigureId)) {
|
|
33545
|
+
if (this.dnd.cancelDnd) {
|
|
33546
|
+
this.dnd.cancelDnd();
|
|
33547
|
+
}
|
|
33548
|
+
this.dnd.draggedFigure = undefined;
|
|
33549
|
+
this.dnd.horizontalSnap = undefined;
|
|
33550
|
+
this.dnd.verticalSnap = undefined;
|
|
33551
|
+
this.dnd.cancelDnd = undefined;
|
|
33552
|
+
}
|
|
33553
|
+
});
|
|
33528
33554
|
}
|
|
33529
33555
|
getVisibleFigures() {
|
|
33530
33556
|
const visibleFigures = this.env.model.getters.getVisibleFigures();
|
|
33531
33557
|
if (this.dnd.draggedFigure &&
|
|
33532
33558
|
!visibleFigures.some((figure) => figure.id === this.dnd.draggedFigure?.id)) {
|
|
33533
|
-
|
|
33559
|
+
const draggedFigure = this.env.model.getters.getFigure(this.env.model.getters.getActiveSheetId(), this.dnd.draggedFigure?.id);
|
|
33560
|
+
if (draggedFigure) {
|
|
33561
|
+
visibleFigures.push(draggedFigure);
|
|
33562
|
+
}
|
|
33534
33563
|
}
|
|
33535
33564
|
return visibleFigures;
|
|
33536
33565
|
}
|
|
@@ -33649,7 +33678,7 @@ class FiguresContainer extends Component {
|
|
|
33649
33678
|
this.dnd.verticalSnap = undefined;
|
|
33650
33679
|
this.env.model.dispatch("UPDATE_FIGURE", { sheetId, id: figure.id, x, y });
|
|
33651
33680
|
};
|
|
33652
|
-
startDnd(onMouseMove, onMouseUp);
|
|
33681
|
+
this.dnd.cancelDnd = startDnd(onMouseMove, onMouseUp);
|
|
33653
33682
|
}
|
|
33654
33683
|
/**
|
|
33655
33684
|
* Initialize the resize of a figure with mouse movements
|
|
@@ -33697,7 +33726,7 @@ class FiguresContainer extends Component {
|
|
|
33697
33726
|
this.dnd.horizontalSnap = undefined;
|
|
33698
33727
|
this.dnd.verticalSnap = undefined;
|
|
33699
33728
|
};
|
|
33700
|
-
startDnd(onMouseMove, onMouseUp);
|
|
33729
|
+
this.dnd.cancelDnd = startDnd(onMouseMove, onMouseUp);
|
|
33701
33730
|
}
|
|
33702
33731
|
getOtherFigures(figId) {
|
|
33703
33732
|
return this.getVisibleFigures().filter((f) => f.id !== figId);
|
|
@@ -37657,7 +37686,7 @@ function extractStyle(cell, data) {
|
|
|
37657
37686
|
vertical: style.verticalAlign
|
|
37658
37687
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
37659
37688
|
: undefined,
|
|
37660
|
-
wrapText: style.wrapping === "wrap",
|
|
37689
|
+
wrapText: style.wrapping === "wrap" || cell.content?.includes(NEWLINE) ? true : undefined,
|
|
37661
37690
|
},
|
|
37662
37691
|
};
|
|
37663
37692
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -38109,9 +38138,8 @@ function convertRows(sheet, numberOfRows, headerGroups) {
|
|
|
38109
38138
|
}
|
|
38110
38139
|
return rows;
|
|
38111
38140
|
}
|
|
38112
|
-
/** Remove newlines (\n) in shared strings, We do not support them */
|
|
38113
38141
|
function convertSharedStrings(xlsxSharedStrings) {
|
|
38114
|
-
return xlsxSharedStrings.map(
|
|
38142
|
+
return xlsxSharedStrings.map(replaceNewLines);
|
|
38115
38143
|
}
|
|
38116
38144
|
function convertCells(sheet, data, sheetDims, warningManager) {
|
|
38117
38145
|
const cells = {};
|
|
@@ -38953,15 +38981,10 @@ class XlsxMiscExtractor extends XlsxBaseExtractor {
|
|
|
38953
38981
|
getSharedStrings() {
|
|
38954
38982
|
return this.mapOnElements({ parent: this.rootFile.file.xml, query: "si" }, (ssElement) => {
|
|
38955
38983
|
// Shared string can either be a simple text, or a rich text (text with formatting, possibly in multiple parts)
|
|
38956
|
-
if (ssElement.children[0].tagName === "t") {
|
|
38957
|
-
return this.extractTextContent(ssElement) || "";
|
|
38958
|
-
}
|
|
38959
38984
|
// We don't support rich text formatting, we'll only extract the text
|
|
38960
|
-
|
|
38961
|
-
return this.
|
|
38962
|
-
|
|
38963
|
-
}).join("");
|
|
38964
|
-
}
|
|
38985
|
+
return this.mapOnElements({ parent: ssElement, query: "t" }, (textElement) => {
|
|
38986
|
+
return this.extractTextContent(textElement) || "";
|
|
38987
|
+
}).join("");
|
|
38965
38988
|
});
|
|
38966
38989
|
}
|
|
38967
38990
|
}
|
|
@@ -41855,7 +41878,7 @@ class CellPlugin extends CorePlugin {
|
|
|
41855
41878
|
const before = this.getters.getCell({ sheetId, col, row });
|
|
41856
41879
|
const hasContent = "content" in after || "formula" in after;
|
|
41857
41880
|
// Compute the new cell properties
|
|
41858
|
-
const afterContent = hasContent ?
|
|
41881
|
+
const afterContent = hasContent ? replaceNewLines(after?.content) : before?.content || "";
|
|
41859
41882
|
let style;
|
|
41860
41883
|
if (after.style !== undefined) {
|
|
41861
41884
|
style = after.style || undefined;
|
|
@@ -54177,6 +54200,7 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
54177
54200
|
break;
|
|
54178
54201
|
case "DELETE_SHEET":
|
|
54179
54202
|
this.cleanViewports();
|
|
54203
|
+
this.sheetsWithDirtyViewports.delete(cmd.sheetId);
|
|
54180
54204
|
break;
|
|
54181
54205
|
case "ACTIVATE_SHEET":
|
|
54182
54206
|
this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
|
|
@@ -56147,7 +56171,7 @@ class ActionButton extends Component {
|
|
|
56147
56171
|
setup() {
|
|
56148
56172
|
onWillUpdateProps((nextProps) => {
|
|
56149
56173
|
if (nextProps.action !== this.props.action) {
|
|
56150
|
-
this.actionButton = createAction(
|
|
56174
|
+
this.actionButton = createAction(nextProps.action);
|
|
56151
56175
|
}
|
|
56152
56176
|
});
|
|
56153
56177
|
}
|
|
@@ -56414,7 +56438,6 @@ css /* scss */ `
|
|
|
56414
56438
|
height: fit-content;
|
|
56415
56439
|
margin-top: -1px;
|
|
56416
56440
|
border: 1px solid;
|
|
56417
|
-
z-index: ${ComponentsImportance.TopBarComposer};
|
|
56418
56441
|
|
|
56419
56442
|
.o-composer:empty:not(:focus):not(.active)::before {
|
|
56420
56443
|
content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
|
|
@@ -56456,6 +56479,7 @@ class TopBarComposer extends Component {
|
|
|
56456
56479
|
}
|
|
56457
56480
|
return cssPropertiesToCss({
|
|
56458
56481
|
"border-color": SELECTION_BORDER_COLOR,
|
|
56482
|
+
"z-index": String(ComponentsImportance.TopBarComposer),
|
|
56459
56483
|
});
|
|
56460
56484
|
}
|
|
56461
56485
|
get delimitation() {
|
|
@@ -60239,7 +60263,12 @@ function createSharedStrings(strings) {
|
|
|
60239
60263
|
["count", strings.length],
|
|
60240
60264
|
["uniqueCount", strings.length],
|
|
60241
60265
|
];
|
|
60242
|
-
const stringNodes = strings.map((string) =>
|
|
60266
|
+
const stringNodes = strings.map((string) => {
|
|
60267
|
+
if (string.trim() !== string) {
|
|
60268
|
+
return escapeXml /*xml*/ `<si><t xml:space="preserve">${string}</t></si>`;
|
|
60269
|
+
}
|
|
60270
|
+
return escapeXml /*xml*/ `<si><t>${string}</t></si>`;
|
|
60271
|
+
});
|
|
60243
60272
|
const xml = escapeXml /*xml*/ `
|
|
60244
60273
|
<sst ${formatAttributes(namespaces)}>
|
|
60245
60274
|
${joinXmlNodes(stringNodes)}
|
|
@@ -60963,6 +60992,6 @@ const constants = {
|
|
|
60963
60992
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
60964
60993
|
|
|
60965
60994
|
|
|
60966
|
-
__info__.version = "17.2.
|
|
60967
|
-
__info__.date = "2024-
|
|
60968
|
-
__info__.hash = "
|
|
60995
|
+
__info__.version = "17.2.30";
|
|
60996
|
+
__info__.date = "2024-12-19T07:48:16.226Z";
|
|
60997
|
+
__info__.hash = "9a9ae31";
|