@leankylin-sheet/react 2.0.9 → 2.0.11
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/components/FxEditor/CalcInfo.d.ts +3 -0
- package/dist/index.esm.js +89 -32
- package/dist/index.js +88 -31
- package/dist/index.umd.js +88 -73
- package/dist/index.umd.min.js +1 -1
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, locale, getStyleByCell, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, moveToEnd, isShowHidenCR, cancelNormalSelected, moveHighlightCell, updateCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, normalizeSelection, scrollToHighlightCell, isLinkValid, getRangetxt, goToLink, replaceHtml, removeHyperlink, onRangeSelectionModalMoveStart, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, onCommentBoxResizeStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, drawArrow, onCellsMoveStart, createDropCellRange, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, setCaretPosition, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getInlineStringNoStyle, rangeHightlightselected, editSheetName, cancelActiveImgItem, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, indexToColumnChar, sortSelection, handleCopy, insertRowCol, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, jfrefreshgrid, handleLink, deleteSheet, opToPatch, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter,
|
|
1
|
+
import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, locale, getStyleByCell, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, moveToEnd, isShowHidenCR, cancelNormalSelected, moveHighlightCell, updateCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, normalizeSelection, scrollToHighlightCell, isLinkValid, getRangetxt, goToLink, replaceHtml, removeHyperlink, onRangeSelectionModalMoveStart, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, onCommentBoxResizeStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, drawArrow, onCellsMoveStart, createDropCellRange, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, setCaretPosition, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getDataBySelectionNoCopy, getInlineStringNoStyle, rangeHightlightselected, editSheetName, cancelActiveImgItem, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, indexToColumnChar, sortSelection, handleCopy, insertRowCol, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, jfrefreshgrid, handleLink, deleteSheet, opToPatch, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter, patchToOp, filterPatch, inverseRowColOptions, ensureSheetIndex, initSheetIndex, handleGlobalKeyDown, handlePasteByLeanklin, groupValuesRefresh } from '@leankylin-sheet/core';
|
|
2
2
|
import React, { useContext, useRef, useState, useMemo, useCallback, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
|
|
3
3
|
import produce, { applyPatches, enablePatches, produceWithPatches } from 'immer';
|
|
4
4
|
import _ from 'lodash';
|
|
@@ -6324,6 +6324,92 @@ var LocationBox = function LocationBox() {
|
|
|
6324
6324
|
}, rangeText));
|
|
6325
6325
|
};
|
|
6326
6326
|
|
|
6327
|
+
var intThousands = function intThousands(number) {
|
|
6328
|
+
var groupSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
|
|
6329
|
+
return String(number).replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
|
|
6330
|
+
};
|
|
6331
|
+
var numberThousands = function numberThousands(num, groupSeparator, precision) {
|
|
6332
|
+
var number = Number(num).toFixed(precision);
|
|
6333
|
+
var _String$split = String(number).split("."),
|
|
6334
|
+
_String$split2 = _slicedToArray(_String$split, 2),
|
|
6335
|
+
init = _String$split2[0],
|
|
6336
|
+
decimal = _String$split2[1];
|
|
6337
|
+
if (precision) {
|
|
6338
|
+
return "".concat(intThousands(init, groupSeparator), ".").concat(decimal);
|
|
6339
|
+
}
|
|
6340
|
+
return intThousands(init, groupSeparator);
|
|
6341
|
+
};
|
|
6342
|
+
var CalcInfo = function CalcInfo() {
|
|
6343
|
+
var _useContext = useContext(WorkbookContext),
|
|
6344
|
+
context = _useContext.context;
|
|
6345
|
+
var data = useMemo(function () {
|
|
6346
|
+
var _context$luckysheet_s;
|
|
6347
|
+
var firstSelection = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[0];
|
|
6348
|
+
if (!firstSelection) {
|
|
6349
|
+
return null;
|
|
6350
|
+
}
|
|
6351
|
+
var columns = firstSelection.column;
|
|
6352
|
+
var rows = firstSelection.row;
|
|
6353
|
+
if ((columns === null || columns === void 0 ? void 0 : columns.length) !== 2 || (rows === null || rows === void 0 ? void 0 : rows.length) !== 2) {
|
|
6354
|
+
return null;
|
|
6355
|
+
}
|
|
6356
|
+
if (columns[0] === columns[1] && rows[0] === rows[1]) {
|
|
6357
|
+
return null;
|
|
6358
|
+
}
|
|
6359
|
+
var selectData = getDataBySelectionNoCopy(context, firstSelection);
|
|
6360
|
+
var flatData = selectData.flat();
|
|
6361
|
+
var count = 0;
|
|
6362
|
+
var sum = 0;
|
|
6363
|
+
var max = null;
|
|
6364
|
+
var min = null;
|
|
6365
|
+
for (var index = 0; index < flatData.length; index += 1) {
|
|
6366
|
+
var cell = flatData[index];
|
|
6367
|
+
var value = Number(cell === null || cell === void 0 ? void 0 : cell.v);
|
|
6368
|
+
count += 1;
|
|
6369
|
+
if (Number.isNaN(value)) {
|
|
6370
|
+
continue;
|
|
6371
|
+
}
|
|
6372
|
+
if (max === null) {
|
|
6373
|
+
max = value;
|
|
6374
|
+
}
|
|
6375
|
+
if (min === null) {
|
|
6376
|
+
min = value;
|
|
6377
|
+
}
|
|
6378
|
+
max = Math.max(max, value);
|
|
6379
|
+
min = Math.min(min, value);
|
|
6380
|
+
sum += value;
|
|
6381
|
+
}
|
|
6382
|
+
return {
|
|
6383
|
+
sum: sum,
|
|
6384
|
+
count: count,
|
|
6385
|
+
average: count ? sum / count : null,
|
|
6386
|
+
max: max,
|
|
6387
|
+
min: min
|
|
6388
|
+
};
|
|
6389
|
+
}, [context.luckysheet_select_save]);
|
|
6390
|
+
var labelMap = {
|
|
6391
|
+
sum: "总和",
|
|
6392
|
+
count: "计数",
|
|
6393
|
+
average: "平均值",
|
|
6394
|
+
max: "最大值",
|
|
6395
|
+
min: "最小值"
|
|
6396
|
+
};
|
|
6397
|
+
if (!data) {
|
|
6398
|
+
return null;
|
|
6399
|
+
}
|
|
6400
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
6401
|
+
style: {
|
|
6402
|
+
fontSize: 12
|
|
6403
|
+
}
|
|
6404
|
+
}, Object.keys(labelMap).map(function (key) {
|
|
6405
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
6406
|
+
style: {
|
|
6407
|
+
marginRight: 10
|
|
6408
|
+
}
|
|
6409
|
+
}, labelMap[key], ": ", numberThousands(data[key], ",", 2));
|
|
6410
|
+
}));
|
|
6411
|
+
};
|
|
6412
|
+
|
|
6327
6413
|
var FxEditor = function FxEditor() {
|
|
6328
6414
|
var _context$luckysheet_s;
|
|
6329
6415
|
var _useContext = useContext(WorkbookContext),
|
|
@@ -6487,7 +6573,7 @@ var FxEditor = function FxEditor() {
|
|
|
6487
6573
|
},
|
|
6488
6574
|
tabIndex: 0,
|
|
6489
6575
|
allowEdit: allowEdit
|
|
6490
|
-
}), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormulaSearch, {
|
|
6576
|
+
}), /*#__PURE__*/React.createElement(CalcInfo, null), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormulaSearch, {
|
|
6491
6577
|
style: {
|
|
6492
6578
|
top: inputContainerRef.current.clientHeight
|
|
6493
6579
|
}
|
|
@@ -10351,34 +10437,13 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
10351
10437
|
_useState2 = _slicedToArray(_useState, 2),
|
|
10352
10438
|
context = _useState2[0],
|
|
10353
10439
|
setContext = _useState2[1];
|
|
10354
|
-
var _locale = locale(context),
|
|
10355
|
-
formula = _locale.formula;
|
|
10356
10440
|
var _useState3 = useState(null),
|
|
10357
10441
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
10358
10442
|
moreToolbarItems = _useState4[0],
|
|
10359
10443
|
setMoreToolbarItems = _useState4[1];
|
|
10360
|
-
var _useState5 = useState({
|
|
10361
|
-
numberC: 0,
|
|
10362
|
-
count: 0,
|
|
10363
|
-
sum: 0,
|
|
10364
|
-
max: 0,
|
|
10365
|
-
min: 0,
|
|
10366
|
-
average: ""
|
|
10367
|
-
}),
|
|
10368
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
10369
|
-
calInfo = _useState6[0],
|
|
10370
|
-
setCalInfo = _useState6[1];
|
|
10371
10444
|
var mergedSettings = useMemo(function () {
|
|
10372
10445
|
return _.assign(_.cloneDeep(defaultSettings), props);
|
|
10373
10446
|
}, _toConsumableArray(_.values(props)));
|
|
10374
|
-
useEffect(function () {
|
|
10375
|
-
var selection = context.luckysheet_select_save;
|
|
10376
|
-
var lang = props.lang;
|
|
10377
|
-
if (selection) {
|
|
10378
|
-
var re = calcSelectionInfo(context, lang);
|
|
10379
|
-
setCalInfo(re);
|
|
10380
|
-
}
|
|
10381
|
-
}, [context.luckysheet_select_save]);
|
|
10382
10447
|
var initSheetData = useCallback(function (draftCtx, newData, index) {
|
|
10383
10448
|
var _lastRow$r, _lastCol$c;
|
|
10384
10449
|
var celldata = newData.celldata,
|
|
@@ -10804,15 +10869,7 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
10804
10869
|
e.stopPropagation();
|
|
10805
10870
|
},
|
|
10806
10871
|
className: "leankylin-popover-backdrop"
|
|
10807
|
-
}))
|
|
10808
|
-
className: "leankylin-stat-area"
|
|
10809
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
10810
|
-
className: "luckysheet-sheet-selection-calInfo"
|
|
10811
|
-
}, !!calInfo.count && (/*#__PURE__*/React.createElement("div", {
|
|
10812
|
-
style: {
|
|
10813
|
-
width: "60px"
|
|
10814
|
-
}
|
|
10815
|
-
}, formula.count, ": ", calInfo.count)), !!calInfo.numberC && !!calInfo.sum && (/*#__PURE__*/React.createElement("div", null, formula.sum, ": ", calInfo.sum)), !!calInfo.numberC && !!calInfo.average && (/*#__PURE__*/React.createElement("div", null, formula.average, ": ", calInfo.average)), !!calInfo.numberC && !!calInfo.max && (/*#__PURE__*/React.createElement("div", null, formula.max, ": ", calInfo.max)), !!calInfo.numberC && !!calInfo.min && (/*#__PURE__*/React.createElement("div", null, formula.min, ": ", calInfo.min)))))));
|
|
10872
|
+
})))));
|
|
10816
10873
|
});
|
|
10817
10874
|
|
|
10818
10875
|
export { Workbook };
|
package/dist/index.js
CHANGED
|
@@ -6334,6 +6334,92 @@ var LocationBox = function LocationBox() {
|
|
|
6334
6334
|
}, rangeText));
|
|
6335
6335
|
};
|
|
6336
6336
|
|
|
6337
|
+
var intThousands = function intThousands(number) {
|
|
6338
|
+
var groupSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
|
|
6339
|
+
return String(number).replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
|
|
6340
|
+
};
|
|
6341
|
+
var numberThousands = function numberThousands(num, groupSeparator, precision) {
|
|
6342
|
+
var number = Number(num).toFixed(precision);
|
|
6343
|
+
var _String$split = String(number).split("."),
|
|
6344
|
+
_String$split2 = _slicedToArray(_String$split, 2),
|
|
6345
|
+
init = _String$split2[0],
|
|
6346
|
+
decimal = _String$split2[1];
|
|
6347
|
+
if (precision) {
|
|
6348
|
+
return "".concat(intThousands(init, groupSeparator), ".").concat(decimal);
|
|
6349
|
+
}
|
|
6350
|
+
return intThousands(init, groupSeparator);
|
|
6351
|
+
};
|
|
6352
|
+
var CalcInfo = function CalcInfo() {
|
|
6353
|
+
var _useContext = React.useContext(WorkbookContext),
|
|
6354
|
+
context = _useContext.context;
|
|
6355
|
+
var data = React.useMemo(function () {
|
|
6356
|
+
var _context$luckysheet_s;
|
|
6357
|
+
var firstSelection = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[0];
|
|
6358
|
+
if (!firstSelection) {
|
|
6359
|
+
return null;
|
|
6360
|
+
}
|
|
6361
|
+
var columns = firstSelection.column;
|
|
6362
|
+
var rows = firstSelection.row;
|
|
6363
|
+
if ((columns === null || columns === void 0 ? void 0 : columns.length) !== 2 || (rows === null || rows === void 0 ? void 0 : rows.length) !== 2) {
|
|
6364
|
+
return null;
|
|
6365
|
+
}
|
|
6366
|
+
if (columns[0] === columns[1] && rows[0] === rows[1]) {
|
|
6367
|
+
return null;
|
|
6368
|
+
}
|
|
6369
|
+
var selectData = core.getDataBySelectionNoCopy(context, firstSelection);
|
|
6370
|
+
var flatData = selectData.flat();
|
|
6371
|
+
var count = 0;
|
|
6372
|
+
var sum = 0;
|
|
6373
|
+
var max = null;
|
|
6374
|
+
var min = null;
|
|
6375
|
+
for (var index = 0; index < flatData.length; index += 1) {
|
|
6376
|
+
var cell = flatData[index];
|
|
6377
|
+
var value = Number(cell === null || cell === void 0 ? void 0 : cell.v);
|
|
6378
|
+
count += 1;
|
|
6379
|
+
if (Number.isNaN(value)) {
|
|
6380
|
+
continue;
|
|
6381
|
+
}
|
|
6382
|
+
if (max === null) {
|
|
6383
|
+
max = value;
|
|
6384
|
+
}
|
|
6385
|
+
if (min === null) {
|
|
6386
|
+
min = value;
|
|
6387
|
+
}
|
|
6388
|
+
max = Math.max(max, value);
|
|
6389
|
+
min = Math.min(min, value);
|
|
6390
|
+
sum += value;
|
|
6391
|
+
}
|
|
6392
|
+
return {
|
|
6393
|
+
sum: sum,
|
|
6394
|
+
count: count,
|
|
6395
|
+
average: count ? sum / count : null,
|
|
6396
|
+
max: max,
|
|
6397
|
+
min: min
|
|
6398
|
+
};
|
|
6399
|
+
}, [context.luckysheet_select_save]);
|
|
6400
|
+
var labelMap = {
|
|
6401
|
+
sum: "总和",
|
|
6402
|
+
count: "计数",
|
|
6403
|
+
average: "平均值",
|
|
6404
|
+
max: "最大值",
|
|
6405
|
+
min: "最小值"
|
|
6406
|
+
};
|
|
6407
|
+
if (!data) {
|
|
6408
|
+
return null;
|
|
6409
|
+
}
|
|
6410
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
6411
|
+
style: {
|
|
6412
|
+
fontSize: 12
|
|
6413
|
+
}
|
|
6414
|
+
}, Object.keys(labelMap).map(function (key) {
|
|
6415
|
+
return /*#__PURE__*/React__default['default'].createElement("span", {
|
|
6416
|
+
style: {
|
|
6417
|
+
marginRight: 10
|
|
6418
|
+
}
|
|
6419
|
+
}, labelMap[key], ": ", numberThousands(data[key], ",", 2));
|
|
6420
|
+
}));
|
|
6421
|
+
};
|
|
6422
|
+
|
|
6337
6423
|
var FxEditor = function FxEditor() {
|
|
6338
6424
|
var _context$luckysheet_s;
|
|
6339
6425
|
var _useContext = React.useContext(WorkbookContext),
|
|
@@ -6497,7 +6583,7 @@ var FxEditor = function FxEditor() {
|
|
|
6497
6583
|
},
|
|
6498
6584
|
tabIndex: 0,
|
|
6499
6585
|
allowEdit: allowEdit
|
|
6500
|
-
}), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
|
|
6586
|
+
}), /*#__PURE__*/React__default['default'].createElement(CalcInfo, null), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
|
|
6501
6587
|
style: {
|
|
6502
6588
|
top: inputContainerRef.current.clientHeight
|
|
6503
6589
|
}
|
|
@@ -10361,34 +10447,13 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
10361
10447
|
_useState2 = _slicedToArray(_useState, 2),
|
|
10362
10448
|
context = _useState2[0],
|
|
10363
10449
|
setContext = _useState2[1];
|
|
10364
|
-
var _locale = core.locale(context),
|
|
10365
|
-
formula = _locale.formula;
|
|
10366
10450
|
var _useState3 = React.useState(null),
|
|
10367
10451
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
10368
10452
|
moreToolbarItems = _useState4[0],
|
|
10369
10453
|
setMoreToolbarItems = _useState4[1];
|
|
10370
|
-
var _useState5 = React.useState({
|
|
10371
|
-
numberC: 0,
|
|
10372
|
-
count: 0,
|
|
10373
|
-
sum: 0,
|
|
10374
|
-
max: 0,
|
|
10375
|
-
min: 0,
|
|
10376
|
-
average: ""
|
|
10377
|
-
}),
|
|
10378
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
10379
|
-
calInfo = _useState6[0],
|
|
10380
|
-
setCalInfo = _useState6[1];
|
|
10381
10454
|
var mergedSettings = React.useMemo(function () {
|
|
10382
10455
|
return ___default['default'].assign(___default['default'].cloneDeep(core.defaultSettings), props);
|
|
10383
10456
|
}, _toConsumableArray(___default['default'].values(props)));
|
|
10384
|
-
React.useEffect(function () {
|
|
10385
|
-
var selection = context.luckysheet_select_save;
|
|
10386
|
-
var lang = props.lang;
|
|
10387
|
-
if (selection) {
|
|
10388
|
-
var re = core.calcSelectionInfo(context, lang);
|
|
10389
|
-
setCalInfo(re);
|
|
10390
|
-
}
|
|
10391
|
-
}, [context.luckysheet_select_save]);
|
|
10392
10457
|
var initSheetData = React.useCallback(function (draftCtx, newData, index) {
|
|
10393
10458
|
var _lastRow$r, _lastCol$c;
|
|
10394
10459
|
var celldata = newData.celldata,
|
|
@@ -10814,15 +10879,7 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
10814
10879
|
e.stopPropagation();
|
|
10815
10880
|
},
|
|
10816
10881
|
className: "leankylin-popover-backdrop"
|
|
10817
|
-
}))
|
|
10818
|
-
className: "leankylin-stat-area"
|
|
10819
|
-
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
10820
|
-
className: "luckysheet-sheet-selection-calInfo"
|
|
10821
|
-
}, !!calInfo.count && (/*#__PURE__*/React__default['default'].createElement("div", {
|
|
10822
|
-
style: {
|
|
10823
|
-
width: "60px"
|
|
10824
|
-
}
|
|
10825
|
-
}, formula.count, ": ", calInfo.count)), !!calInfo.numberC && !!calInfo.sum && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.sum, ": ", calInfo.sum)), !!calInfo.numberC && !!calInfo.average && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.average, ": ", calInfo.average)), !!calInfo.numberC && !!calInfo.max && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.max, ": ", calInfo.max)), !!calInfo.numberC && !!calInfo.min && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.min, ": ", calInfo.min)))))));
|
|
10882
|
+
})))));
|
|
10826
10883
|
});
|
|
10827
10884
|
|
|
10828
10885
|
exports.Workbook = Workbook;
|
package/dist/index.umd.js
CHANGED
|
@@ -86847,48 +86847,6 @@
|
|
|
86847
86847
|
}
|
|
86848
86848
|
return ret;
|
|
86849
86849
|
}
|
|
86850
|
-
function calcSelectionInfo(ctx, lang) {
|
|
86851
|
-
var selection = ctx.luckysheet_select_save;
|
|
86852
|
-
var numberC = 0;
|
|
86853
|
-
var count = 0;
|
|
86854
|
-
var sum = 0;
|
|
86855
|
-
var max = -Infinity;
|
|
86856
|
-
var min = Infinity;
|
|
86857
|
-
for (var s = 0; s < selection.length; s += 1) {
|
|
86858
|
-
var data = getDataBySelectionNoCopy(ctx, selection[s]);
|
|
86859
|
-
for (var r = 0; r < data.length; r += 1) {
|
|
86860
|
-
for (var c = 0; c < data[0].length; c += 1) {
|
|
86861
|
-
var _data$r$c, _data$r$c$ct, _data$r$c$v, _data$r$c2, _data$r$c3;
|
|
86862
|
-
if (r >= data.length || c >= data[0].length) break;
|
|
86863
|
-
var ct = (_data$r$c = data[r][c]) === null || _data$r$c === void 0 ? void 0 : (_data$r$c$ct = _data$r$c.ct) === null || _data$r$c$ct === void 0 ? void 0 : _data$r$c$ct.t;
|
|
86864
|
-
var value = ((_data$r$c$v = (_data$r$c2 = data[r][c]) === null || _data$r$c2 === void 0 ? void 0 : _data$r$c2.v) !== null && _data$r$c$v !== void 0 ? _data$r$c$v : (_data$r$c3 = data[r][c]) === null || _data$r$c3 === void 0 ? void 0 : _data$r$c3.m) || "0";
|
|
86865
|
-
if (ct === "n" || ct === "g" && parseFloat(value).toString() !== "NaN") {
|
|
86866
|
-
var valueNumber = parseFloat(value);
|
|
86867
|
-
count += 1;
|
|
86868
|
-
sum += valueNumber;
|
|
86869
|
-
max = Math.max(valueNumber, max);
|
|
86870
|
-
min = Math.min(valueNumber, min);
|
|
86871
|
-
numberC += 1;
|
|
86872
|
-
} else if (value != null) {
|
|
86873
|
-
count += 1;
|
|
86874
|
-
}
|
|
86875
|
-
}
|
|
86876
|
-
}
|
|
86877
|
-
}
|
|
86878
|
-
var formatString = lang && !["zh", "zh_tw"].includes(lang) ? "0.00" : "w0.00";
|
|
86879
|
-
var average = SSF.format(formatString, sum / numberC);
|
|
86880
|
-
sum = SSF.format(formatString, sum);
|
|
86881
|
-
max = SSF.format(formatString, max);
|
|
86882
|
-
min = SSF.format(formatString, min);
|
|
86883
|
-
return {
|
|
86884
|
-
numberC: numberC,
|
|
86885
|
-
count: count,
|
|
86886
|
-
sum: sum,
|
|
86887
|
-
max: max,
|
|
86888
|
-
min: min,
|
|
86889
|
-
average: average
|
|
86890
|
-
};
|
|
86891
|
-
}
|
|
86892
86850
|
|
|
86893
86851
|
function defaultContext(refs) {
|
|
86894
86852
|
return {
|
|
@@ -108608,6 +108566,92 @@
|
|
|
108608
108566
|
}, rangeText));
|
|
108609
108567
|
};
|
|
108610
108568
|
|
|
108569
|
+
var intThousands$1 = function intThousands(number) {
|
|
108570
|
+
var groupSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
|
|
108571
|
+
return String(number).replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
|
|
108572
|
+
};
|
|
108573
|
+
var numberThousands$1 = function numberThousands(num, groupSeparator, precision) {
|
|
108574
|
+
var number = Number(num).toFixed(precision);
|
|
108575
|
+
var _String$split = String(number).split("."),
|
|
108576
|
+
_String$split2 = _slicedToArray(_String$split, 2),
|
|
108577
|
+
init = _String$split2[0],
|
|
108578
|
+
decimal = _String$split2[1];
|
|
108579
|
+
if (precision) {
|
|
108580
|
+
return "".concat(intThousands$1(init, groupSeparator), ".").concat(decimal);
|
|
108581
|
+
}
|
|
108582
|
+
return intThousands$1(init, groupSeparator);
|
|
108583
|
+
};
|
|
108584
|
+
var CalcInfo = function CalcInfo() {
|
|
108585
|
+
var _useContext = React.useContext(WorkbookContext),
|
|
108586
|
+
context = _useContext.context;
|
|
108587
|
+
var data = React.useMemo(function () {
|
|
108588
|
+
var _context$luckysheet_s;
|
|
108589
|
+
var firstSelection = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[0];
|
|
108590
|
+
if (!firstSelection) {
|
|
108591
|
+
return null;
|
|
108592
|
+
}
|
|
108593
|
+
var columns = firstSelection.column;
|
|
108594
|
+
var rows = firstSelection.row;
|
|
108595
|
+
if ((columns === null || columns === void 0 ? void 0 : columns.length) !== 2 || (rows === null || rows === void 0 ? void 0 : rows.length) !== 2) {
|
|
108596
|
+
return null;
|
|
108597
|
+
}
|
|
108598
|
+
if (columns[0] === columns[1] && rows[0] === rows[1]) {
|
|
108599
|
+
return null;
|
|
108600
|
+
}
|
|
108601
|
+
var selectData = getDataBySelectionNoCopy(context, firstSelection);
|
|
108602
|
+
var flatData = selectData.flat();
|
|
108603
|
+
var count = 0;
|
|
108604
|
+
var sum = 0;
|
|
108605
|
+
var max = null;
|
|
108606
|
+
var min = null;
|
|
108607
|
+
for (var index = 0; index < flatData.length; index += 1) {
|
|
108608
|
+
var cell = flatData[index];
|
|
108609
|
+
var value = Number(cell === null || cell === void 0 ? void 0 : cell.v);
|
|
108610
|
+
count += 1;
|
|
108611
|
+
if (Number.isNaN(value)) {
|
|
108612
|
+
continue;
|
|
108613
|
+
}
|
|
108614
|
+
if (max === null) {
|
|
108615
|
+
max = value;
|
|
108616
|
+
}
|
|
108617
|
+
if (min === null) {
|
|
108618
|
+
min = value;
|
|
108619
|
+
}
|
|
108620
|
+
max = Math.max(max, value);
|
|
108621
|
+
min = Math.min(min, value);
|
|
108622
|
+
sum += value;
|
|
108623
|
+
}
|
|
108624
|
+
return {
|
|
108625
|
+
sum: sum,
|
|
108626
|
+
count: count,
|
|
108627
|
+
average: count ? sum / count : null,
|
|
108628
|
+
max: max,
|
|
108629
|
+
min: min
|
|
108630
|
+
};
|
|
108631
|
+
}, [context.luckysheet_select_save]);
|
|
108632
|
+
var labelMap = {
|
|
108633
|
+
sum: "总和",
|
|
108634
|
+
count: "计数",
|
|
108635
|
+
average: "平均值",
|
|
108636
|
+
max: "最大值",
|
|
108637
|
+
min: "最小值"
|
|
108638
|
+
};
|
|
108639
|
+
if (!data) {
|
|
108640
|
+
return null;
|
|
108641
|
+
}
|
|
108642
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
108643
|
+
style: {
|
|
108644
|
+
fontSize: 12
|
|
108645
|
+
}
|
|
108646
|
+
}, Object.keys(labelMap).map(function (key) {
|
|
108647
|
+
return /*#__PURE__*/React__default['default'].createElement("span", {
|
|
108648
|
+
style: {
|
|
108649
|
+
marginRight: 10
|
|
108650
|
+
}
|
|
108651
|
+
}, labelMap[key], ": ", numberThousands$1(data[key], ",", 2));
|
|
108652
|
+
}));
|
|
108653
|
+
};
|
|
108654
|
+
|
|
108611
108655
|
var FxEditor = function FxEditor() {
|
|
108612
108656
|
var _context$luckysheet_s;
|
|
108613
108657
|
var _useContext = React.useContext(WorkbookContext),
|
|
@@ -108771,7 +108815,7 @@
|
|
|
108771
108815
|
},
|
|
108772
108816
|
tabIndex: 0,
|
|
108773
108817
|
allowEdit: allowEdit
|
|
108774
|
-
}), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
|
|
108818
|
+
}), /*#__PURE__*/React__default['default'].createElement(CalcInfo, null), settings === null || settings === void 0 ? void 0 : settings.fxContainer, focused && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
|
|
108775
108819
|
style: {
|
|
108776
108820
|
top: inputContainerRef.current.clientHeight
|
|
108777
108821
|
}
|
|
@@ -112635,34 +112679,13 @@
|
|
|
112635
112679
|
_useState2 = _slicedToArray(_useState, 2),
|
|
112636
112680
|
context = _useState2[0],
|
|
112637
112681
|
setContext = _useState2[1];
|
|
112638
|
-
var _locale = locale(context),
|
|
112639
|
-
formula = _locale.formula;
|
|
112640
112682
|
var _useState3 = React.useState(null),
|
|
112641
112683
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
112642
112684
|
moreToolbarItems = _useState4[0],
|
|
112643
112685
|
setMoreToolbarItems = _useState4[1];
|
|
112644
|
-
var _useState5 = React.useState({
|
|
112645
|
-
numberC: 0,
|
|
112646
|
-
count: 0,
|
|
112647
|
-
sum: 0,
|
|
112648
|
-
max: 0,
|
|
112649
|
-
min: 0,
|
|
112650
|
-
average: ""
|
|
112651
|
-
}),
|
|
112652
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
112653
|
-
calInfo = _useState6[0],
|
|
112654
|
-
setCalInfo = _useState6[1];
|
|
112655
112686
|
var mergedSettings = React.useMemo(function () {
|
|
112656
112687
|
return lodash.assign(lodash.cloneDeep(defaultSettings), props);
|
|
112657
112688
|
}, _toConsumableArray(lodash.values(props)));
|
|
112658
|
-
React.useEffect(function () {
|
|
112659
|
-
var selection = context.luckysheet_select_save;
|
|
112660
|
-
var lang = props.lang;
|
|
112661
|
-
if (selection) {
|
|
112662
|
-
var re = calcSelectionInfo(context, lang);
|
|
112663
|
-
setCalInfo(re);
|
|
112664
|
-
}
|
|
112665
|
-
}, [context.luckysheet_select_save]);
|
|
112666
112689
|
var initSheetData = React.useCallback(function (draftCtx, newData, index) {
|
|
112667
112690
|
var _lastRow$r, _lastCol$c;
|
|
112668
112691
|
var celldata = newData.celldata,
|
|
@@ -113088,15 +113111,7 @@
|
|
|
113088
113111
|
e.stopPropagation();
|
|
113089
113112
|
},
|
|
113090
113113
|
className: "leankylin-popover-backdrop"
|
|
113091
|
-
}))
|
|
113092
|
-
className: "leankylin-stat-area"
|
|
113093
|
-
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
113094
|
-
className: "luckysheet-sheet-selection-calInfo"
|
|
113095
|
-
}, !!calInfo.count && (/*#__PURE__*/React__default['default'].createElement("div", {
|
|
113096
|
-
style: {
|
|
113097
|
-
width: "60px"
|
|
113098
|
-
}
|
|
113099
|
-
}, formula.count, ": ", calInfo.count)), !!calInfo.numberC && !!calInfo.sum && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.sum, ": ", calInfo.sum)), !!calInfo.numberC && !!calInfo.average && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.average, ": ", calInfo.average)), !!calInfo.numberC && !!calInfo.max && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.max, ": ", calInfo.max)), !!calInfo.numberC && !!calInfo.min && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.min, ": ", calInfo.min)))))));
|
|
113114
|
+
})))));
|
|
113100
113115
|
});
|
|
113101
113116
|
|
|
113102
113117
|
exports.Workbook = Workbook;
|