@fileverse-dev/fortune-core 1.0.26 → 2.0.0
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/index.esm.js +80254 -0
- package/dist/index.js +80600 -0
- package/{es → dist/packages/core/src}/api/cell.d.ts +10 -10
- package/{lib → dist/packages/core/src}/api/common.d.ts +66 -71
- package/{es → dist/packages/core/src}/api/errors.d.ts +2 -2
- package/{es → dist/packages/core/src}/api/index.d.ts +9 -9
- package/{es → dist/packages/core/src}/api/merge.d.ts +5 -5
- package/{lib → dist/packages/core/src}/api/range.d.ts +22 -22
- package/{lib → dist/packages/core/src}/api/rowcol.d.ts +14 -14
- package/{lib → dist/packages/core/src}/api/sheet.d.ts +10 -10
- package/{lib → dist/packages/core/src}/api/workbook.d.ts +15 -15
- package/{lib → dist/packages/core/src}/canvas.d.ts +46 -46
- package/{es → dist/packages/core/src}/context.d.ts +197 -198
- package/{es → dist/packages/core/src}/events/copy.d.ts +2 -2
- package/{lib → dist/packages/core/src}/events/index.d.ts +4 -4
- package/{lib → dist/packages/core/src}/events/keyboard.d.ts +6 -6
- package/{es → dist/packages/core/src}/events/mouse.d.ts +22 -22
- package/{es → dist/packages/core/src}/events/paste.d.ts +3 -3
- package/{lib → dist/packages/core/src}/index.d.ts +10 -10
- package/{lib → dist/packages/core/src}/locale/en.d.ts +992 -992
- package/{lib → dist/packages/core/src}/locale/es.d.ts +1134 -1134
- package/{lib → dist/packages/core/src}/locale/hi.d.ts +1030 -1030
- package/{lib → dist/packages/core/src}/locale/index.d.ts +1049 -1049
- package/{es → dist/packages/core/src}/locale/zh.d.ts +1048 -1048
- package/{lib → dist/packages/core/src}/locale/zh_tw.d.ts +1187 -1187
- package/{lib → dist/packages/core/src}/modules/ConditionFormat.d.ts +17 -17
- package/{lib → dist/packages/core/src}/modules/border.d.ts +3 -3
- package/{lib → dist/packages/core/src}/modules/cell.d.ts +32 -32
- package/{es → dist/packages/core/src}/modules/clipboard.d.ts +3 -3
- package/{es → dist/packages/core/src}/modules/color.d.ts +1 -1
- package/{lib → dist/packages/core/src}/modules/comment.d.ts +97 -97
- package/{es → dist/packages/core/src}/modules/conditionalFormat.d.ts +2 -2
- package/{es → dist/packages/core/src}/modules/cursor.d.ts +3 -3
- package/{es → dist/packages/core/src}/modules/dataVerification.d.ts +11 -11
- package/{es → dist/packages/core/src}/modules/dropCell.d.ts +10 -10
- package/{lib → dist/packages/core/src}/modules/filter.d.ts +45 -45
- package/{es → dist/packages/core/src}/modules/format.d.ts +6 -6
- package/{lib → dist/packages/core/src}/modules/formula.d.ts +54 -54
- package/{es → dist/packages/core/src}/modules/freeze.d.ts +5 -5
- package/{es → dist/packages/core/src}/modules/hyperlink.d.ts +21 -21
- package/{lib → dist/packages/core/src}/modules/iframe.d.ts +12 -12
- package/{es → dist/packages/core/src}/modules/image.d.ts +31 -31
- package/{es → dist/packages/core/src}/modules/index.d.ts +36 -36
- package/{lib → dist/packages/core/src}/modules/inline-string.d.ts +36 -36
- package/{es → dist/packages/core/src}/modules/location.d.ts +6 -6
- package/{es → dist/packages/core/src}/modules/locationCondition.d.ts +21 -21
- package/{es → dist/packages/core/src}/modules/merge.d.ts +3 -3
- package/{es → dist/packages/core/src}/modules/mobile.d.ts +5 -5
- package/{lib → dist/packages/core/src}/modules/moveCells.d.ts +5 -5
- package/{lib → dist/packages/core/src}/modules/protection.d.ts +5 -5
- package/{lib → dist/packages/core/src}/modules/refresh.d.ts +3 -3
- package/{es → dist/packages/core/src}/modules/rowcol.d.ts +19 -19
- package/{lib → dist/packages/core/src}/modules/screenshot.d.ts +2 -2
- package/{es → dist/packages/core/src}/modules/searchReplace.d.ts +36 -36
- package/{lib → dist/packages/core/src}/modules/selection.d.ts +46 -46
- package/{es → dist/packages/core/src}/modules/sheet.d.ts +10 -10
- package/{es → dist/packages/core/src}/modules/sort.d.ts +7 -7
- package/{es → dist/packages/core/src}/modules/splitColumn.d.ts +5 -5
- package/{es → dist/packages/core/src}/modules/text.d.ts +10 -10
- package/{lib → dist/packages/core/src}/modules/toolbar.d.ts +32 -32
- package/{es → dist/packages/core/src}/modules/validation.d.ts +19 -19
- package/{es → dist/packages/core/src}/modules/zoom.d.ts +3 -3
- package/{es → dist/packages/core/src}/settings.d.ts +100 -100
- package/{es → dist/packages/core/src}/types.d.ts +371 -376
- package/{es → dist/packages/core/src}/utils/freeze.d.ts +7 -7
- package/{es → dist/packages/core/src}/utils/index.d.ts +18 -19
- package/{lib → dist/packages/core/src}/utils/patch.d.ts +37 -37
- package/dist/packages/react/src/components/ChangeColor/index.d.ts +7 -0
- package/dist/packages/react/src/components/ConditionFormat/ConditionRules.d.ts +6 -0
- package/dist/packages/react/src/components/ConditionFormat/index.d.ts +7 -0
- package/dist/packages/react/src/components/ContextMenu/Divider.d.ts +3 -0
- package/dist/packages/react/src/components/ContextMenu/FilterMenu.d.ts +3 -0
- package/dist/packages/react/src/components/ContextMenu/Menu.d.ts +8 -0
- package/dist/packages/react/src/components/ContextMenu/SheetTab.d.ts +4 -0
- package/dist/packages/react/src/components/ContextMenu/index.d.ts +5 -0
- package/dist/packages/react/src/components/CustomSort/index.d.ts +4 -0
- package/dist/packages/react/src/components/DataVerification/DropdownList.d.ts +4 -0
- package/dist/packages/react/src/components/DataVerification/RangeDialog.d.ts +4 -0
- package/dist/packages/react/src/components/DataVerification/getDisplayedRangeTxt.d.ts +2 -0
- package/dist/packages/react/src/components/DataVerification/index.d.ts +4 -0
- package/dist/packages/react/src/components/Dialog/index.d.ts +15 -0
- package/dist/packages/react/src/components/DuneChartsInputModal/DuneChartsInputModal.d.ts +11 -0
- package/dist/packages/react/src/components/DunePreview/DunePreview.d.ts +13 -0
- package/dist/packages/react/src/components/FilterOption/index.d.ts +5 -0
- package/dist/packages/react/src/components/FormatSearch/index.d.ts +6 -0
- package/dist/packages/react/src/components/FormulaSearch/index.d.ts +5 -0
- package/dist/packages/react/src/components/FxEditor/NameBox.d.ts +3 -0
- package/dist/packages/react/src/components/FxEditor/index.d.ts +4 -0
- package/dist/packages/react/src/components/IFrameBoxs/iFrameBoxs.d.ts +4 -0
- package/dist/packages/react/src/components/ImgBoxs/index.d.ts +3 -0
- package/dist/packages/react/src/components/LinkEidtCard/index.d.ts +5 -0
- package/dist/packages/react/src/components/LocationCondition/index.d.ts +3 -0
- package/dist/packages/react/src/components/MessageBox/index.d.ts +9 -0
- package/dist/packages/react/src/components/NotationBoxes/index.d.ts +3 -0
- package/dist/packages/react/src/components/ResetColumnWidth/index.d.ts +2 -0
- package/dist/packages/react/src/components/SVGDefines.d.ts +5 -0
- package/dist/packages/react/src/components/SVGIcon.d.ts +9 -0
- package/dist/packages/react/src/components/SearchReplace/index.d.ts +6 -0
- package/dist/packages/react/src/components/Sheet/index.d.ts +8 -0
- package/dist/packages/react/src/components/SheetList/SheetHiddenButton.d.ts +8 -0
- package/dist/packages/react/src/components/SheetList/SheetListItem.d.ts +9 -0
- package/dist/packages/react/src/components/SheetList/index.d.ts +4 -0
- package/dist/packages/react/src/components/SheetOverlay/ColumnHeader.d.ts +3 -0
- package/dist/packages/react/src/components/SheetOverlay/ContentEditable.d.ts +11 -0
- package/dist/packages/react/src/components/SheetOverlay/FormulaHint/index.d.ts +4 -0
- package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/constant.d.ts +63 -0
- package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/index.d.ts +4 -0
- package/dist/packages/react/src/components/SheetOverlay/InputBox.d.ts +3 -0
- package/dist/packages/react/src/components/SheetOverlay/RowHeader.d.ts +3 -0
- package/dist/packages/react/src/components/SheetOverlay/ScrollBar/index.d.ts +7 -0
- package/dist/packages/react/src/components/SheetOverlay/index.d.ts +4 -0
- package/dist/packages/react/src/components/SheetTab/SheetItem.d.ts +8 -0
- package/dist/packages/react/src/components/SheetTab/index.d.ts +4 -0
- package/dist/packages/react/src/components/SplitColumn/index.d.ts +3 -0
- package/dist/packages/react/src/components/Toolbar/Button.d.ts +12 -0
- package/dist/packages/react/src/components/Toolbar/ColorPicker.d.ts +6 -0
- package/dist/packages/react/src/components/Toolbar/Combo.d.ts +12 -0
- package/dist/packages/react/src/components/Toolbar/CustomBorder.d.ts +7 -0
- package/dist/packages/react/src/components/Toolbar/CustomButton.d.ts +11 -0
- package/dist/packages/react/src/components/Toolbar/CustomColor.d.ts +8 -0
- package/dist/packages/react/src/components/Toolbar/CustomIcon.d.ts +9 -0
- package/dist/packages/react/src/components/Toolbar/Divider.d.ts +4 -0
- package/dist/packages/react/src/components/Toolbar/MoreItemsContainer.d.ts +6 -0
- package/dist/packages/react/src/components/Toolbar/Select.d.ts +14 -0
- package/dist/packages/react/src/components/Toolbar/index.d.ts +10 -0
- package/dist/packages/react/src/components/Workbook/api.d.ts +1177 -0
- package/dist/packages/react/src/components/Workbook/index.d.ts +1185 -0
- package/dist/packages/react/src/components/ZoomControl/index.d.ts +4 -0
- package/dist/packages/react/src/components/index.d.ts +4 -0
- package/dist/packages/react/src/constants.d.ts +1 -0
- package/dist/packages/react/src/context/index.d.ts +25 -0
- package/dist/packages/react/src/context/modal.d.ts +10 -0
- package/dist/packages/react/src/hooks/useAlert.d.ts +4 -0
- package/dist/packages/react/src/hooks/useDialog.d.ts +5 -0
- package/dist/packages/react/src/hooks/useOutsideClick.d.ts +2 -0
- package/dist/packages/react/src/hooks/usePrevious.d.ts +2 -0
- package/dist/packages/react/src/index.d.ts +1 -0
- package/dist/packages/react/src/utils/datepickerStyles.d.ts +2 -0
- package/dist/stories/API.stories.d.ts +1210 -0
- package/dist/stories/Collabration.stories.d.ts +2359 -0
- package/dist/stories/Features.stories.d.ts +9430 -0
- package/dist/stories/data/cell.d.ts +983 -0
- package/dist/stories/data/dataVerification.d.ts +131 -0
- package/dist/stories/data/empty.d.ts +10 -0
- package/dist/stories/data/formula.d.ts +362 -0
- package/dist/stories/data/freeze.d.ts +34 -0
- package/dist/stories/data/protected.d.ts +40 -0
- package/dist/stories/utils.d.ts +1 -0
- package/package.json +6 -7
- package/es/api/cell.js +0 -204
- package/es/api/common.d.ts +0 -71
- package/es/api/common.js +0 -79
- package/es/api/errors.js +0 -2
- package/es/api/index.js +0 -8
- package/es/api/merge.js +0 -15
- package/es/api/range.d.ts +0 -22
- package/es/api/range.js +0 -123
- package/es/api/rowcol.d.ts +0 -14
- package/es/api/rowcol.js +0 -207
- package/es/api/sheet.d.ts +0 -10
- package/es/api/sheet.js +0 -128
- package/es/api/workbook.d.ts +0 -15
- package/es/api/workbook.js +0 -85
- package/es/canvas.d.ts +0 -46
- package/es/canvas.js +0 -1350
- package/es/context.js +0 -381
- package/es/events/copy.js +0 -78
- package/es/events/index.d.ts +0 -4
- package/es/events/index.js +0 -4
- package/es/events/keyboard.d.ts +0 -6
- package/es/events/keyboard.js +0 -332
- package/es/events/mouse.js +0 -1725
- package/es/events/paste.js +0 -1378
- package/es/index.d.ts +0 -10
- package/es/index.js +0 -10
- package/es/locale/en.d.ts +0 -992
- package/es/locale/en.js +0 -10564
- package/es/locale/es.d.ts +0 -1134
- package/es/locale/es.js +0 -10010
- package/es/locale/hi.d.ts +0 -1030
- package/es/locale/hi.js +0 -10550
- package/es/locale/index.d.ts +0 -1049
- package/es/locale/index.js +0 -23
- package/es/locale/zh.js +0 -10568
- package/es/locale/zh_tw.d.ts +0 -1187
- package/es/locale/zh_tw.js +0 -10072
- package/es/modules/ConditionFormat.d.ts +0 -17
- package/es/modules/ConditionFormat.js +0 -1258
- package/es/modules/border.d.ts +0 -3
- package/es/modules/border.js +0 -1240
- package/es/modules/cell.d.ts +0 -32
- package/es/modules/cell.js +0 -1055
- package/es/modules/clipboard.js +0 -36
- package/es/modules/color.js +0 -1
- package/es/modules/comment.d.ts +0 -97
- package/es/modules/comment.js +0 -597
- package/es/modules/conditionalFormat.js +0 -441
- package/es/modules/cursor.js +0 -62
- package/es/modules/dataVerification.js +0 -701
- package/es/modules/dropCell.js +0 -2267
- package/es/modules/filter.d.ts +0 -45
- package/es/modules/filter.js +0 -434
- package/es/modules/format.js +0 -323
- package/es/modules/formula.d.ts +0 -54
- package/es/modules/formula.js +0 -2301
- package/es/modules/freeze.js +0 -148
- package/es/modules/hyperlink.js +0 -216
- package/es/modules/iframe.d.ts +0 -12
- package/es/modules/iframe.js +0 -220
- package/es/modules/image.js +0 -253
- package/es/modules/index.js +0 -36
- package/es/modules/inline-string.d.ts +0 -36
- package/es/modules/inline-string.js +0 -437
- package/es/modules/location.js +0 -46
- package/es/modules/locationCondition.js +0 -218
- package/es/modules/merge.js +0 -216
- package/es/modules/mobile.js +0 -33
- package/es/modules/moveCells.d.ts +0 -5
- package/es/modules/moveCells.js +0 -348
- package/es/modules/protection.d.ts +0 -5
- package/es/modules/protection.js +0 -96
- package/es/modules/refresh.d.ts +0 -3
- package/es/modules/refresh.js +0 -34
- package/es/modules/rowcol.js +0 -1922
- package/es/modules/screenshot.d.ts +0 -2
- package/es/modules/screenshot.js +0 -90
- package/es/modules/searchReplace.js +0 -388
- package/es/modules/selection.d.ts +0 -46
- package/es/modules/selection.js +0 -1674
- package/es/modules/sheet.js +0 -237
- package/es/modules/sort.js +0 -134
- package/es/modules/splitColumn.js +0 -126
- package/es/modules/ssf.js +0 -1533
- package/es/modules/text.js +0 -1207
- package/es/modules/toolbar.d.ts +0 -32
- package/es/modules/toolbar.js +0 -970
- package/es/modules/validation.js +0 -190
- package/es/modules/zoom.js +0 -29
- package/es/settings.js +0 -36
- package/es/types.js +0 -1
- package/es/utils/freeze.js +0 -86
- package/es/utils/index.js +0 -198
- package/es/utils/patch.d.ts +0 -37
- package/es/utils/patch.js +0 -381
- package/lib/api/cell.d.ts +0 -10
- package/lib/api/cell.js +0 -215
- package/lib/api/common.js +0 -88
- package/lib/api/errors.d.ts +0 -2
- package/lib/api/errors.js +0 -8
- package/lib/api/index.d.ts +0 -9
- package/lib/api/index.js +0 -101
- package/lib/api/merge.d.ts +0 -5
- package/lib/api/merge.js +0 -22
- package/lib/api/range.js +0 -138
- package/lib/api/rowcol.js +0 -222
- package/lib/api/sheet.js +0 -145
- package/lib/api/workbook.js +0 -98
- package/lib/canvas.js +0 -1356
- package/lib/context.d.ts +0 -198
- package/lib/context.js +0 -393
- package/lib/events/copy.d.ts +0 -2
- package/lib/events/copy.js +0 -85
- package/lib/events/index.js +0 -49
- package/lib/events/keyboard.js +0 -342
- package/lib/events/mouse.d.ts +0 -22
- package/lib/events/mouse.js +0 -1744
- package/lib/events/paste.d.ts +0 -3
- package/lib/events/paste.js +0 -1386
- package/lib/index.js +0 -109
- package/lib/locale/en.js +0 -10570
- package/lib/locale/es.js +0 -10016
- package/lib/locale/hi.js +0 -10556
- package/lib/locale/index.js +0 -29
- package/lib/locale/zh.d.ts +0 -1048
- package/lib/locale/zh.js +0 -10574
- package/lib/locale/zh_tw.js +0 -10078
- package/lib/modules/ConditionFormat.js +0 -1273
- package/lib/modules/border.js +0 -1248
- package/lib/modules/cell.js +0 -1085
- package/lib/modules/clipboard.d.ts +0 -3
- package/lib/modules/clipboard.js +0 -42
- package/lib/modules/color.d.ts +0 -1
- package/lib/modules/color.js +0 -7
- package/lib/modules/comment.js +0 -625
- package/lib/modules/conditionalFormat.d.ts +0 -2
- package/lib/modules/conditionalFormat.js +0 -447
- package/lib/modules/cursor.d.ts +0 -3
- package/lib/modules/cursor.js +0 -70
- package/lib/modules/dataVerification.d.ts +0 -11
- package/lib/modules/dataVerification.js +0 -716
- package/lib/modules/dropCell.d.ts +0 -10
- package/lib/modules/dropCell.js +0 -2283
- package/lib/modules/filter.js +0 -448
- package/lib/modules/format.d.ts +0 -6
- package/lib/modules/format.js +0 -334
- package/lib/modules/formula.js +0 -2330
- package/lib/modules/freeze.d.ts +0 -5
- package/lib/modules/freeze.js +0 -158
- package/lib/modules/hyperlink.d.ts +0 -21
- package/lib/modules/hyperlink.js +0 -232
- package/lib/modules/iframe.js +0 -236
- package/lib/modules/image.d.ts +0 -31
- package/lib/modules/image.js +0 -272
- package/lib/modules/index.d.ts +0 -36
- package/lib/modules/index.js +0 -401
- package/lib/modules/inline-string.js +0 -452
- package/lib/modules/location.d.ts +0 -6
- package/lib/modules/location.js +0 -57
- package/lib/modules/locationCondition.d.ts +0 -21
- package/lib/modules/locationCondition.js +0 -229
- package/lib/modules/merge.d.ts +0 -3
- package/lib/modules/merge.js +0 -223
- package/lib/modules/mobile.d.ts +0 -5
- package/lib/modules/mobile.js +0 -41
- package/lib/modules/moveCells.js +0 -357
- package/lib/modules/protection.js +0 -106
- package/lib/modules/refresh.js +0 -40
- package/lib/modules/rowcol.d.ts +0 -19
- package/lib/modules/rowcol.js +0 -1935
- package/lib/modules/screenshot.js +0 -96
- package/lib/modules/searchReplace.d.ts +0 -36
- package/lib/modules/searchReplace.js +0 -402
- package/lib/modules/selection.js +0 -1703
- package/lib/modules/sheet.d.ts +0 -10
- package/lib/modules/sheet.js +0 -250
- package/lib/modules/sort.d.ts +0 -7
- package/lib/modules/sort.js +0 -143
- package/lib/modules/splitColumn.d.ts +0 -5
- package/lib/modules/splitColumn.js +0 -136
- package/lib/modules/ssf.js +0 -1539
- package/lib/modules/text.d.ts +0 -10
- package/lib/modules/text.js +0 -1221
- package/lib/modules/toolbar.js +0 -1003
- package/lib/modules/validation.d.ts +0 -19
- package/lib/modules/validation.js +0 -205
- package/lib/modules/zoom.d.ts +0 -3
- package/lib/modules/zoom.js +0 -36
- package/lib/settings.d.ts +0 -100
- package/lib/settings.js +0 -42
- package/lib/types.d.ts +0 -376
- package/lib/types.js +0 -5
- package/lib/utils/freeze.d.ts +0 -7
- package/lib/utils/freeze.js +0 -92
- package/lib/utils/index.d.ts +0 -19
- package/lib/utils/index.js +0 -258
- package/lib/utils/patch.js +0 -392
package/lib/canvas.js
DELETED
|
@@ -1,1356 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.defaultStyle = exports.Canvas = void 0;
|
|
7
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
-
var _context = require("./context");
|
|
9
|
-
var _cell = require("./modules/cell");
|
|
10
|
-
var _text = require("./modules/text");
|
|
11
|
-
var _inlineString = require("./modules/inline-string");
|
|
12
|
-
var _utils = require("./utils");
|
|
13
|
-
var _border = require("./modules/border");
|
|
14
|
-
var _modules = require("./modules");
|
|
15
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
var defaultStyle = exports.defaultStyle = {
|
|
17
|
-
fillStyle: "#000000",
|
|
18
|
-
textBaseline: "middle",
|
|
19
|
-
strokeStyle: "#dfdfdf",
|
|
20
|
-
rowFillStyle: "#5e5e5e",
|
|
21
|
-
textAlign: "center"
|
|
22
|
-
};
|
|
23
|
-
function isRealNum(val) {
|
|
24
|
-
return !Number.isNaN(Number(val));
|
|
25
|
-
}
|
|
26
|
-
var cfIconsImg;
|
|
27
|
-
function getCfIconsImg() {
|
|
28
|
-
if (cfIconsImg) return cfIconsImg;
|
|
29
|
-
cfIconsImg = new Image();
|
|
30
|
-
cfIconsImg.src = "data:image/png;base64,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";
|
|
31
|
-
return cfIconsImg;
|
|
32
|
-
}
|
|
33
|
-
function getBorderFix() {
|
|
34
|
-
return [-1, 0, 0, -1];
|
|
35
|
-
}
|
|
36
|
-
function setLineDash(canvasborder, type, hv, moveX, moveY, toX, toY) {
|
|
37
|
-
var borderType = {
|
|
38
|
-
"0": "none",
|
|
39
|
-
"1": "Thin",
|
|
40
|
-
"2": "Hair",
|
|
41
|
-
"3": "Dotted",
|
|
42
|
-
"4": "Dashed",
|
|
43
|
-
"5": "DashDot",
|
|
44
|
-
"6": "DashDotDot",
|
|
45
|
-
"7": "Double",
|
|
46
|
-
"8": "Medium",
|
|
47
|
-
"9": "MediumDashed",
|
|
48
|
-
"10": "MediumDashDot",
|
|
49
|
-
"11": "MediumDashDotDot",
|
|
50
|
-
"12": "SlantedDashDot",
|
|
51
|
-
"13": "Thick"
|
|
52
|
-
};
|
|
53
|
-
type = borderType[type.toString()];
|
|
54
|
-
try {
|
|
55
|
-
if (type === "Hair") {
|
|
56
|
-
canvasborder.setLineDash([1, 2]);
|
|
57
|
-
} else if (type.indexOf("DashDotDot") > -1) {
|
|
58
|
-
canvasborder.setLineDash([2, 2, 5, 2, 2]);
|
|
59
|
-
} else if (type.indexOf("DashDot") > -1) {
|
|
60
|
-
canvasborder.setLineDash([2, 5, 2]);
|
|
61
|
-
} else if (type.indexOf("Dotted") > -1) {
|
|
62
|
-
canvasborder.setLineDash([2]);
|
|
63
|
-
} else if (type.indexOf("Dashed") > -1) {
|
|
64
|
-
canvasborder.setLineDash([3]);
|
|
65
|
-
} else {
|
|
66
|
-
canvasborder.setLineDash([0]);
|
|
67
|
-
}
|
|
68
|
-
} catch (e) {
|
|
69
|
-
console.error(e);
|
|
70
|
-
}
|
|
71
|
-
canvasborder.beginPath();
|
|
72
|
-
if (type.indexOf("Medium") > -1) {
|
|
73
|
-
if (hv === "h") {
|
|
74
|
-
canvasborder.moveTo(moveX, moveY - 0.5);
|
|
75
|
-
canvasborder.lineTo(toX, toY - 0.5);
|
|
76
|
-
} else {
|
|
77
|
-
canvasborder.moveTo(moveX - 0.5, moveY);
|
|
78
|
-
canvasborder.lineTo(toX - 0.5, toY);
|
|
79
|
-
}
|
|
80
|
-
canvasborder.lineWidth = 2;
|
|
81
|
-
} else if (type === "Thick") {
|
|
82
|
-
canvasborder.moveTo(moveX, moveY);
|
|
83
|
-
canvasborder.lineTo(toX, toY);
|
|
84
|
-
canvasborder.lineWidth = 3;
|
|
85
|
-
} else {
|
|
86
|
-
canvasborder.moveTo(moveX, moveY);
|
|
87
|
-
canvasborder.lineTo(toX, toY);
|
|
88
|
-
canvasborder.lineWidth = 1;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
var Canvas = exports.Canvas = function () {
|
|
92
|
-
function Canvas(canvasElement, ctx) {
|
|
93
|
-
this.canvasElement = canvasElement;
|
|
94
|
-
this.sheetCtx = ctx;
|
|
95
|
-
this.cellOverflowMapCache = {};
|
|
96
|
-
}
|
|
97
|
-
Canvas.prototype.drawRowHeader = function (scrollHeight, drawHeight, offsetTop) {
|
|
98
|
-
var _a;
|
|
99
|
-
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
100
|
-
if (_lodash.default.isNil(drawHeight)) {
|
|
101
|
-
_a = this.sheetCtx.luckysheetTableContentHW, drawHeight = _a[1];
|
|
102
|
-
}
|
|
103
|
-
if (_lodash.default.isNil(offsetTop)) {
|
|
104
|
-
offsetTop = this.sheetCtx.columnHeaderHeight;
|
|
105
|
-
}
|
|
106
|
-
var renderCtx = this.canvasElement.getContext("2d");
|
|
107
|
-
if (!renderCtx) return;
|
|
108
|
-
renderCtx.save();
|
|
109
|
-
renderCtx.scale(this.sheetCtx.devicePixelRatio, this.sheetCtx.devicePixelRatio);
|
|
110
|
-
renderCtx.clearRect(0, offsetTop, this.sheetCtx.rowHeaderWidth - 1, drawHeight);
|
|
111
|
-
renderCtx.font = (0, _text.defaultFont)(this.sheetCtx.defaultFontSize);
|
|
112
|
-
renderCtx.textBaseline = defaultStyle.textBaseline;
|
|
113
|
-
renderCtx.fillStyle = defaultStyle.fillStyle;
|
|
114
|
-
var dataset_row_st;
|
|
115
|
-
var dataset_row_ed;
|
|
116
|
-
dataset_row_st = _lodash.default.sortedIndex(this.sheetCtx.visibledatarow, scrollHeight);
|
|
117
|
-
dataset_row_ed = _lodash.default.sortedIndex(this.sheetCtx.visibledatarow, scrollHeight + drawHeight);
|
|
118
|
-
if (dataset_row_st === -1) {
|
|
119
|
-
dataset_row_st = 0;
|
|
120
|
-
}
|
|
121
|
-
if (dataset_row_ed === -1) {
|
|
122
|
-
dataset_row_ed = this.sheetCtx.visibledatarow.length - 1;
|
|
123
|
-
}
|
|
124
|
-
renderCtx.save();
|
|
125
|
-
renderCtx.beginPath();
|
|
126
|
-
renderCtx.rect(0, offsetTop - 1, this.sheetCtx.rowHeaderWidth - 1, drawHeight - 2);
|
|
127
|
-
renderCtx.clip();
|
|
128
|
-
var end_r;
|
|
129
|
-
var start_r;
|
|
130
|
-
var bodrder05 = 0.5;
|
|
131
|
-
var preEndR;
|
|
132
|
-
for (var r = dataset_row_st; r <= dataset_row_ed; r += 1) {
|
|
133
|
-
if (r === 0) {
|
|
134
|
-
start_r = -scrollHeight - 1;
|
|
135
|
-
} else {
|
|
136
|
-
start_r = this.sheetCtx.visibledatarow[r - 1] - scrollHeight - 1;
|
|
137
|
-
}
|
|
138
|
-
end_r = this.sheetCtx.visibledatarow[r] - scrollHeight;
|
|
139
|
-
var firstOffset = dataset_row_st === r ? -2 : 0;
|
|
140
|
-
var lastOffset = dataset_row_ed === r ? -2 : 0;
|
|
141
|
-
if (((_c = (_b = this.sheetCtx.hooks).beforeRenderRowHeaderCell) === null || _c === void 0 ? void 0 : _c.call(_b, "".concat(r + 1), r, start_r + offsetTop + firstOffset, this.sheetCtx.rowHeaderWidth - 1, end_r - start_r + 1 + lastOffset - firstOffset, renderCtx)) === false) {
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
if (((_e = (_d = this.sheetCtx.config) === null || _d === void 0 ? void 0 : _d.rowhidden) === null || _e === void 0 ? void 0 : _e[r]) == null) {
|
|
145
|
-
renderCtx.fillStyle = "#F8F9FA";
|
|
146
|
-
renderCtx.fillRect(0, start_r + offsetTop + firstOffset, this.sheetCtx.rowHeaderWidth - 1, end_r - start_r + 1 + lastOffset - firstOffset);
|
|
147
|
-
renderCtx.fillStyle = "#000000";
|
|
148
|
-
renderCtx.save();
|
|
149
|
-
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
150
|
-
var textMetrics = (0, _text.getMeasureText)(r + 1, renderCtx, this.sheetCtx);
|
|
151
|
-
var horizonAlignPos = (this.sheetCtx.rowHeaderWidth - textMetrics.width) / 2;
|
|
152
|
-
var verticalAlignPos = start_r + (end_r - start_r) / 2 + offsetTop;
|
|
153
|
-
renderCtx.fillText("".concat(r + 1), horizonAlignPos / this.sheetCtx.zoomRatio, verticalAlignPos / this.sheetCtx.zoomRatio);
|
|
154
|
-
renderCtx.restore();
|
|
155
|
-
}
|
|
156
|
-
renderCtx.beginPath();
|
|
157
|
-
renderCtx.moveTo(this.sheetCtx.rowHeaderWidth - 2 + bodrder05, start_r + offsetTop - 2);
|
|
158
|
-
renderCtx.lineTo(this.sheetCtx.rowHeaderWidth - 2 + bodrder05, end_r + offsetTop - 2);
|
|
159
|
-
renderCtx.lineWidth = 1;
|
|
160
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
161
|
-
renderCtx.stroke();
|
|
162
|
-
renderCtx.closePath();
|
|
163
|
-
if (this.sheetCtx.config.rowhidden && this.sheetCtx.config.rowhidden[r] == null && this.sheetCtx.config.rowhidden[r + 1] != null) {
|
|
164
|
-
renderCtx.beginPath();
|
|
165
|
-
renderCtx.moveTo(-1, end_r + offsetTop - 4 + bodrder05);
|
|
166
|
-
renderCtx.lineTo(this.sheetCtx.rowHeaderWidth - 1, end_r + offsetTop - 4 + bodrder05);
|
|
167
|
-
renderCtx.closePath();
|
|
168
|
-
renderCtx.stroke();
|
|
169
|
-
} else if (this.sheetCtx.config.rowhidden == null || this.sheetCtx.config.rowhidden[r] == null) {
|
|
170
|
-
renderCtx.beginPath();
|
|
171
|
-
renderCtx.moveTo(-1, end_r + offsetTop - 2 + bodrder05);
|
|
172
|
-
renderCtx.lineTo(this.sheetCtx.rowHeaderWidth - 1, end_r + offsetTop - 2 + bodrder05);
|
|
173
|
-
renderCtx.closePath();
|
|
174
|
-
renderCtx.stroke();
|
|
175
|
-
}
|
|
176
|
-
if (((_g = (_f = this.sheetCtx.config) === null || _f === void 0 ? void 0 : _f.rowhidden) === null || _g === void 0 ? void 0 : _g[r - 1]) != null && preEndR !== undefined) {
|
|
177
|
-
renderCtx.beginPath();
|
|
178
|
-
renderCtx.moveTo(-1, preEndR + offsetTop + bodrder05);
|
|
179
|
-
renderCtx.lineTo(this.sheetCtx.rowHeaderWidth - 1, preEndR + offsetTop + bodrder05);
|
|
180
|
-
renderCtx.closePath();
|
|
181
|
-
renderCtx.stroke();
|
|
182
|
-
}
|
|
183
|
-
preEndR = end_r;
|
|
184
|
-
(_j = (_h = this.sheetCtx.hooks).afterRenderRowHeaderCell) === null || _j === void 0 ? void 0 : _j.call(_h, "".concat(r + 1), r, start_r + offsetTop + firstOffset, this.sheetCtx.rowHeaderWidth - 1, end_r - start_r + 1 + lastOffset - firstOffset, renderCtx);
|
|
185
|
-
}
|
|
186
|
-
renderCtx.restore();
|
|
187
|
-
renderCtx.restore();
|
|
188
|
-
};
|
|
189
|
-
Canvas.prototype.drawColumnHeader = function (scrollWidth, drawWidth, offsetLeft) {
|
|
190
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
191
|
-
if (drawWidth === undefined) {
|
|
192
|
-
drawWidth = this.sheetCtx.luckysheetTableContentHW[0];
|
|
193
|
-
}
|
|
194
|
-
if (offsetLeft === undefined) {
|
|
195
|
-
offsetLeft = this.sheetCtx.rowHeaderWidth;
|
|
196
|
-
}
|
|
197
|
-
var renderCtx = this.canvasElement.getContext("2d");
|
|
198
|
-
if (!renderCtx) return;
|
|
199
|
-
renderCtx.save();
|
|
200
|
-
renderCtx.scale(this.sheetCtx.devicePixelRatio, this.sheetCtx.devicePixelRatio);
|
|
201
|
-
renderCtx.clearRect(offsetLeft, 0, drawWidth, this.sheetCtx.columnHeaderHeight - 1);
|
|
202
|
-
renderCtx.font = (0, _text.defaultFont)(this.sheetCtx.defaultFontSize);
|
|
203
|
-
renderCtx.textBaseline = defaultStyle.textBaseline;
|
|
204
|
-
renderCtx.fillStyle = defaultStyle.fillStyle;
|
|
205
|
-
var dataset_col_st;
|
|
206
|
-
var dataset_col_ed;
|
|
207
|
-
dataset_col_st = _lodash.default.sortedIndex(this.sheetCtx.visibledatacolumn, scrollWidth);
|
|
208
|
-
dataset_col_ed = _lodash.default.sortedIndex(this.sheetCtx.visibledatacolumn, scrollWidth + drawWidth);
|
|
209
|
-
if (dataset_col_st === -1) {
|
|
210
|
-
dataset_col_st = 0;
|
|
211
|
-
}
|
|
212
|
-
if (dataset_col_ed === -1) {
|
|
213
|
-
dataset_col_ed = this.sheetCtx.visibledatacolumn.length - 1;
|
|
214
|
-
}
|
|
215
|
-
renderCtx.save();
|
|
216
|
-
renderCtx.beginPath();
|
|
217
|
-
renderCtx.rect(offsetLeft - 1, 0, drawWidth, this.sheetCtx.columnHeaderHeight - 1);
|
|
218
|
-
renderCtx.clip();
|
|
219
|
-
var end_c;
|
|
220
|
-
var start_c;
|
|
221
|
-
var bodrder05 = 0.5;
|
|
222
|
-
var preEndC;
|
|
223
|
-
for (var c = dataset_col_st; c <= dataset_col_ed; c += 1) {
|
|
224
|
-
if (c === 0) {
|
|
225
|
-
start_c = -scrollWidth;
|
|
226
|
-
} else {
|
|
227
|
-
start_c = this.sheetCtx.visibledatacolumn[c - 1] - scrollWidth;
|
|
228
|
-
}
|
|
229
|
-
end_c = this.sheetCtx.visibledatacolumn[c] - scrollWidth;
|
|
230
|
-
var abc = (0, _utils.indexToColumnChar)(c);
|
|
231
|
-
if (((_b = (_a = this.sheetCtx.hooks).beforeRenderColumnHeaderCell) === null || _b === void 0 ? void 0 : _b.call(_a, abc, c, start_c + offsetLeft - 1, end_c - start_c, this.sheetCtx.columnHeaderHeight - 1, renderCtx)) === false) {
|
|
232
|
-
continue;
|
|
233
|
-
}
|
|
234
|
-
if (((_d = (_c = this.sheetCtx.config) === null || _c === void 0 ? void 0 : _c.colhidden) === null || _d === void 0 ? void 0 : _d[c]) == null) {
|
|
235
|
-
renderCtx.fillStyle = "#F8F9FA";
|
|
236
|
-
renderCtx.fillRect(start_c + offsetLeft - 1, 0, end_c - start_c, this.sheetCtx.columnHeaderHeight - 1);
|
|
237
|
-
renderCtx.fillStyle = "#000000";
|
|
238
|
-
renderCtx.save();
|
|
239
|
-
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
240
|
-
var textMetrics = (0, _text.getMeasureText)(abc, renderCtx, this.sheetCtx);
|
|
241
|
-
var horizonAlignPos = Math.round(start_c + (end_c - start_c) / 2 + offsetLeft - textMetrics.width / 2);
|
|
242
|
-
var verticalAlignPos = Math.round(this.sheetCtx.columnHeaderHeight / 2);
|
|
243
|
-
renderCtx.fillText(abc, horizonAlignPos / this.sheetCtx.zoomRatio, verticalAlignPos / this.sheetCtx.zoomRatio);
|
|
244
|
-
renderCtx.restore();
|
|
245
|
-
}
|
|
246
|
-
if (this.sheetCtx.config.colhidden && this.sheetCtx.config.colhidden[c] != null && this.sheetCtx.config.colhidden[c + 1] != null) {
|
|
247
|
-
renderCtx.beginPath();
|
|
248
|
-
renderCtx.moveTo(end_c + offsetLeft - 4 + bodrder05, 0);
|
|
249
|
-
renderCtx.lineTo(end_c + offsetLeft - 4 + bodrder05, this.sheetCtx.columnHeaderHeight - 2);
|
|
250
|
-
renderCtx.lineWidth = 1;
|
|
251
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
252
|
-
renderCtx.closePath();
|
|
253
|
-
renderCtx.stroke();
|
|
254
|
-
} else if (this.sheetCtx.config.colhidden == null || this.sheetCtx.config.colhidden[c] == null) {
|
|
255
|
-
renderCtx.beginPath();
|
|
256
|
-
renderCtx.moveTo(end_c + offsetLeft - 2 + bodrder05, 0);
|
|
257
|
-
renderCtx.lineTo(end_c + offsetLeft - 2 + bodrder05, this.sheetCtx.columnHeaderHeight - 2);
|
|
258
|
-
renderCtx.lineWidth = 1;
|
|
259
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
260
|
-
renderCtx.closePath();
|
|
261
|
-
renderCtx.stroke();
|
|
262
|
-
}
|
|
263
|
-
if (((_f = (_e = this.sheetCtx.config) === null || _e === void 0 ? void 0 : _e.colhidden) === null || _f === void 0 ? void 0 : _f[c - 1]) != null && preEndC !== undefined) {
|
|
264
|
-
renderCtx.beginPath();
|
|
265
|
-
renderCtx.moveTo(preEndC + offsetLeft + bodrder05, 0);
|
|
266
|
-
renderCtx.lineTo(preEndC + offsetLeft + bodrder05, this.sheetCtx.columnHeaderHeight - 2);
|
|
267
|
-
renderCtx.closePath();
|
|
268
|
-
renderCtx.stroke();
|
|
269
|
-
}
|
|
270
|
-
renderCtx.beginPath();
|
|
271
|
-
renderCtx.moveTo(start_c + offsetLeft - 1, this.sheetCtx.columnHeaderHeight - 2 + bodrder05);
|
|
272
|
-
renderCtx.lineTo(end_c + offsetLeft - 1, this.sheetCtx.columnHeaderHeight - 2 + bodrder05);
|
|
273
|
-
renderCtx.stroke();
|
|
274
|
-
renderCtx.closePath();
|
|
275
|
-
preEndC = end_c;
|
|
276
|
-
(_h = (_g = this.sheetCtx.hooks).afterRenderColumnHeaderCell) === null || _h === void 0 ? void 0 : _h.call(_g, abc, c, start_c + offsetLeft - 1, end_c - start_c, this.sheetCtx.columnHeaderHeight - 1, renderCtx);
|
|
277
|
-
}
|
|
278
|
-
renderCtx.restore();
|
|
279
|
-
renderCtx.restore();
|
|
280
|
-
};
|
|
281
|
-
Canvas.prototype.drawMain = function (_a) {
|
|
282
|
-
var _b;
|
|
283
|
-
var _this = this;
|
|
284
|
-
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
285
|
-
var scrollWidth = _a.scrollWidth,
|
|
286
|
-
scrollHeight = _a.scrollHeight,
|
|
287
|
-
drawWidth = _a.drawWidth,
|
|
288
|
-
drawHeight = _a.drawHeight,
|
|
289
|
-
offsetLeft = _a.offsetLeft,
|
|
290
|
-
offsetTop = _a.offsetTop,
|
|
291
|
-
columnOffsetCell = _a.columnOffsetCell,
|
|
292
|
-
rowOffsetCell = _a.rowOffsetCell,
|
|
293
|
-
clear = _a.clear;
|
|
294
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
295
|
-
if (_lodash.default.isNil(flowdata)) {
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
clearTimeout(this.measureTextCacheTimeOut);
|
|
299
|
-
if (drawWidth === undefined) {
|
|
300
|
-
drawWidth = this.sheetCtx.luckysheetTableContentHW[0];
|
|
301
|
-
}
|
|
302
|
-
if (drawHeight === undefined) {
|
|
303
|
-
_b = this.sheetCtx.luckysheetTableContentHW, drawHeight = _b[1];
|
|
304
|
-
}
|
|
305
|
-
if (offsetLeft === undefined) {
|
|
306
|
-
offsetLeft = this.sheetCtx.rowHeaderWidth;
|
|
307
|
-
}
|
|
308
|
-
if (offsetTop === undefined) {
|
|
309
|
-
offsetTop = this.sheetCtx.columnHeaderHeight;
|
|
310
|
-
}
|
|
311
|
-
if (columnOffsetCell === undefined) {
|
|
312
|
-
columnOffsetCell = 0;
|
|
313
|
-
}
|
|
314
|
-
if (rowOffsetCell === undefined) {
|
|
315
|
-
rowOffsetCell = 0;
|
|
316
|
-
}
|
|
317
|
-
var renderCtx = this.canvasElement.getContext("2d");
|
|
318
|
-
if (!renderCtx) return;
|
|
319
|
-
renderCtx.save();
|
|
320
|
-
renderCtx.scale(this.sheetCtx.devicePixelRatio, this.sheetCtx.devicePixelRatio);
|
|
321
|
-
if (clear) {
|
|
322
|
-
renderCtx.clearRect(0, 0, this.sheetCtx.luckysheetTableContentHW[0], this.sheetCtx.luckysheetTableContentHW[1]);
|
|
323
|
-
}
|
|
324
|
-
var rowStart;
|
|
325
|
-
var rowEnd;
|
|
326
|
-
var colStart;
|
|
327
|
-
var colEnd;
|
|
328
|
-
rowStart = _lodash.default.sortedIndex(this.sheetCtx.visibledatarow, scrollHeight);
|
|
329
|
-
rowEnd = _lodash.default.sortedIndex(this.sheetCtx.visibledatarow, scrollHeight + drawHeight);
|
|
330
|
-
if (rowStart === -1) {
|
|
331
|
-
rowStart = 0;
|
|
332
|
-
}
|
|
333
|
-
rowStart += rowOffsetCell;
|
|
334
|
-
if (rowEnd === -1) {
|
|
335
|
-
rowEnd = this.sheetCtx.visibledatarow.length - 1;
|
|
336
|
-
}
|
|
337
|
-
rowEnd += rowOffsetCell;
|
|
338
|
-
if (rowEnd >= this.sheetCtx.visibledatarow.length) {
|
|
339
|
-
rowEnd = this.sheetCtx.visibledatarow.length - 1;
|
|
340
|
-
}
|
|
341
|
-
colStart = _lodash.default.sortedIndex(this.sheetCtx.visibledatacolumn, scrollWidth);
|
|
342
|
-
colEnd = _lodash.default.sortedIndex(this.sheetCtx.visibledatacolumn, scrollWidth + drawWidth);
|
|
343
|
-
if (colStart === -1) {
|
|
344
|
-
colStart = 0;
|
|
345
|
-
}
|
|
346
|
-
colStart += columnOffsetCell;
|
|
347
|
-
if (colEnd === -1) {
|
|
348
|
-
colEnd = this.sheetCtx.visibledatacolumn.length - 1;
|
|
349
|
-
}
|
|
350
|
-
colEnd += columnOffsetCell;
|
|
351
|
-
if (colEnd >= this.sheetCtx.visibledatacolumn.length) {
|
|
352
|
-
colEnd = this.sheetCtx.visibledatacolumn.length - 1;
|
|
353
|
-
}
|
|
354
|
-
var rowEndY = this.sheetCtx.visibledatarow[rowEnd];
|
|
355
|
-
var colEndX = this.sheetCtx.visibledatacolumn[colEnd];
|
|
356
|
-
renderCtx.fillStyle = "#ffffff";
|
|
357
|
-
renderCtx.fillRect(offsetLeft - 1, offsetTop - 1, colEndX - scrollWidth, rowEndY - scrollHeight);
|
|
358
|
-
renderCtx.font = (0, _text.defaultFont)(this.sheetCtx.defaultFontSize);
|
|
359
|
-
renderCtx.fillStyle = defaultStyle.fillStyle;
|
|
360
|
-
var cellupdate = [];
|
|
361
|
-
var mergeCache = {};
|
|
362
|
-
var borderOffset = {};
|
|
363
|
-
var bodrder05 = 0.5;
|
|
364
|
-
(_d = (_c = this.sheetCtx.hooks).beforeRenderCellArea) === null || _d === void 0 ? void 0 : _d.call(_c, flowdata, renderCtx);
|
|
365
|
-
for (var r = rowStart; r <= rowEnd; r += 1) {
|
|
366
|
-
var startY = void 0;
|
|
367
|
-
if (r === 0) {
|
|
368
|
-
startY = -scrollHeight - 1;
|
|
369
|
-
} else {
|
|
370
|
-
startY = this.sheetCtx.visibledatarow[r - 1] - scrollHeight - 1;
|
|
371
|
-
}
|
|
372
|
-
var endY = this.sheetCtx.visibledatarow[r] - scrollHeight;
|
|
373
|
-
if (((_f = (_e = this.sheetCtx.config) === null || _e === void 0 ? void 0 : _e.rowhidden) === null || _f === void 0 ? void 0 : _f[r]) != null) {
|
|
374
|
-
continue;
|
|
375
|
-
}
|
|
376
|
-
for (var c = colStart; c <= colEnd; c += 1) {
|
|
377
|
-
var startX = void 0;
|
|
378
|
-
if (c === 0) {
|
|
379
|
-
startX = -scrollWidth;
|
|
380
|
-
} else {
|
|
381
|
-
startX = this.sheetCtx.visibledatacolumn[c - 1] - scrollWidth;
|
|
382
|
-
}
|
|
383
|
-
var endX = this.sheetCtx.visibledatacolumn[c] - scrollWidth;
|
|
384
|
-
if (((_h = (_g = this.sheetCtx.config) === null || _g === void 0 ? void 0 : _g.colhidden) === null || _h === void 0 ? void 0 : _h[c]) != null) {
|
|
385
|
-
continue;
|
|
386
|
-
}
|
|
387
|
-
var firstcolumnlen = this.sheetCtx.defaultcollen;
|
|
388
|
-
if ((_k = (_j = this.sheetCtx.config) === null || _j === void 0 ? void 0 : _j.columnlen) === null || _k === void 0 ? void 0 : _k[c]) {
|
|
389
|
-
firstcolumnlen = this.sheetCtx.config.columnlen[c];
|
|
390
|
-
}
|
|
391
|
-
if ((_l = flowdata === null || flowdata === void 0 ? void 0 : flowdata[r]) === null || _l === void 0 ? void 0 : _l[c]) {
|
|
392
|
-
var value = flowdata[r][c];
|
|
393
|
-
if (value === null || value === void 0 ? void 0 : value.mc) {
|
|
394
|
-
borderOffset["".concat(r, "_").concat(c)] = {
|
|
395
|
-
startY: startY,
|
|
396
|
-
startX: startX,
|
|
397
|
-
endY: endY,
|
|
398
|
-
endX: endX
|
|
399
|
-
};
|
|
400
|
-
if ("rs" in value.mc) {
|
|
401
|
-
var key = "r".concat(r, "c").concat(c);
|
|
402
|
-
mergeCache[key] = cellupdate.length;
|
|
403
|
-
} else {
|
|
404
|
-
var key = "r".concat(value.mc.r, "c").concat(value.mc.c);
|
|
405
|
-
var margeMain = cellupdate[mergeCache[key]];
|
|
406
|
-
if (_lodash.default.isNil(margeMain)) {
|
|
407
|
-
mergeCache[key] = cellupdate.length;
|
|
408
|
-
cellupdate.push({
|
|
409
|
-
r: r,
|
|
410
|
-
c: c,
|
|
411
|
-
startX: startX,
|
|
412
|
-
startY: startY,
|
|
413
|
-
endY: endY,
|
|
414
|
-
endX: endX,
|
|
415
|
-
firstcolumnlen: firstcolumnlen
|
|
416
|
-
});
|
|
417
|
-
} else {
|
|
418
|
-
if (margeMain.c === c) {
|
|
419
|
-
margeMain.endY += endY - startY - 1;
|
|
420
|
-
}
|
|
421
|
-
if (margeMain.r === r) {
|
|
422
|
-
margeMain.endX += endX - startX;
|
|
423
|
-
margeMain.firstcolumnlen += firstcolumnlen;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
continue;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
cellupdate.push({
|
|
431
|
-
r: r,
|
|
432
|
-
c: c,
|
|
433
|
-
startY: startY,
|
|
434
|
-
startX: startX,
|
|
435
|
-
endY: endY,
|
|
436
|
-
endX: endX,
|
|
437
|
-
firstcolumnlen: firstcolumnlen
|
|
438
|
-
});
|
|
439
|
-
borderOffset["".concat(r, "_").concat(c)] = {
|
|
440
|
-
startY: startY,
|
|
441
|
-
startX: startX,
|
|
442
|
-
endY: endY,
|
|
443
|
-
endX: endX
|
|
444
|
-
};
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
var dynamicArrayCompute = {};
|
|
448
|
-
var afCompute = {};
|
|
449
|
-
var cfCompute = (0, _modules.getComputeMap)(this.sheetCtx);
|
|
450
|
-
var cellOverflowMap = this.getCellOverflowMap(renderCtx, colStart, colEnd, rowStart, rowEnd);
|
|
451
|
-
var mcArr = [];
|
|
452
|
-
for (var cud = 0; cud < cellupdate.length; cud += 1) {
|
|
453
|
-
var item = cellupdate[cud];
|
|
454
|
-
var r = item.r;
|
|
455
|
-
var c = item.c;
|
|
456
|
-
var startY = item.startY;
|
|
457
|
-
var startX = item.startX;
|
|
458
|
-
var endY = item.endY;
|
|
459
|
-
var endX = item.endX;
|
|
460
|
-
if (_lodash.default.isNil(flowdata[r])) {
|
|
461
|
-
continue;
|
|
462
|
-
}
|
|
463
|
-
if (_lodash.default.isNil(flowdata[r][c])) {
|
|
464
|
-
this.nullCellRender(r, c, startY, startX, endY, endX, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05);
|
|
465
|
-
} else {
|
|
466
|
-
var cell = flowdata[r][c];
|
|
467
|
-
var value = null;
|
|
468
|
-
if (cell === null || cell === void 0 ? void 0 : cell.mc) {
|
|
469
|
-
mcArr.push(cellupdate[cud]);
|
|
470
|
-
} else {
|
|
471
|
-
value = (0, _cell.getRealCellValue)(r, c, flowdata);
|
|
472
|
-
}
|
|
473
|
-
if (_lodash.default.isNil(value) || value.toString().length === 0) {
|
|
474
|
-
this.nullCellRender(r, c, startY, startX, endY, endX, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05);
|
|
475
|
-
} else {
|
|
476
|
-
if ("".concat(r, "_").concat(c) in dynamicArrayCompute) {
|
|
477
|
-
value = dynamicArrayCompute["".concat(r, "_").concat(c)].v;
|
|
478
|
-
}
|
|
479
|
-
this.cellRender(r, c, startY, startX, endY, endX, value, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05);
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
for (var m = 0; m < mcArr.length; m += 1) {
|
|
484
|
-
var item = mcArr[m];
|
|
485
|
-
var r = item.r;
|
|
486
|
-
var c = item.c;
|
|
487
|
-
var startY = item.startY;
|
|
488
|
-
var startX = item.startX;
|
|
489
|
-
var endY = item.endY - 1;
|
|
490
|
-
var endX = item.endX - 1;
|
|
491
|
-
var cell = flowdata[r][c];
|
|
492
|
-
if (!cell) continue;
|
|
493
|
-
var value = null;
|
|
494
|
-
var mergeMaindata = cell.mc;
|
|
495
|
-
if (!mergeMaindata) continue;
|
|
496
|
-
value = (0, _cell.getRealCellValue)(mergeMaindata.r, mergeMaindata.c, flowdata);
|
|
497
|
-
r = mergeMaindata.r;
|
|
498
|
-
c = mergeMaindata.c;
|
|
499
|
-
var mainCell = flowdata[r][c];
|
|
500
|
-
if (!((_m = mainCell === null || mainCell === void 0 ? void 0 : mainCell.mc) === null || _m === void 0 ? void 0 : _m.rs) || !((_o = mainCell.mc) === null || _o === void 0 ? void 0 : _o.cs)) {
|
|
501
|
-
continue;
|
|
502
|
-
}
|
|
503
|
-
if (c === 0) {
|
|
504
|
-
startX = -scrollWidth;
|
|
505
|
-
} else {
|
|
506
|
-
startX = this.sheetCtx.visibledatacolumn[c - 1] - scrollWidth;
|
|
507
|
-
}
|
|
508
|
-
if (r === 0) {
|
|
509
|
-
startY = -scrollHeight - 1;
|
|
510
|
-
} else {
|
|
511
|
-
startY = this.sheetCtx.visibledatarow[r - 1] - scrollHeight - 1;
|
|
512
|
-
}
|
|
513
|
-
endY = this.sheetCtx.visibledatarow[r + mainCell.mc.rs - 1] - scrollHeight;
|
|
514
|
-
endX = this.sheetCtx.visibledatacolumn[c + mainCell.mc.cs - 1] - scrollWidth;
|
|
515
|
-
if (_lodash.default.isNil(value) || value.toString().length === 0) {
|
|
516
|
-
this.nullCellRender(r, c, startY, startX, endY, endX, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05, true);
|
|
517
|
-
} else {
|
|
518
|
-
if ("".concat(r, "_").concat(c) in dynamicArrayCompute) {
|
|
519
|
-
value = dynamicArrayCompute["".concat(r, "_").concat(c)].v;
|
|
520
|
-
}
|
|
521
|
-
this.cellRender(r, c, startY, startX, endY, endX, value, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05, true);
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
if (((_r = (_q = (_p = this.sheetCtx.config) === null || _p === void 0 ? void 0 : _p.borderInfo) === null || _q === void 0 ? void 0 : _q.length) !== null && _r !== void 0 ? _r : 0) > 0) {
|
|
525
|
-
var borderSlashRender_1 = function borderSlashRender_1(style, color, startY, startX, endY, endX, _offsetLeft, _offsetTop, canvas) {
|
|
526
|
-
var linetype = style;
|
|
527
|
-
var moveX = startX - 2 + bodrder05 + _offsetLeft;
|
|
528
|
-
var moveY = startY + _offsetTop;
|
|
529
|
-
var toX = endX - 2 + bodrder05 + _offsetLeft;
|
|
530
|
-
var toY = endY - 2 + bodrder05 + _offsetTop;
|
|
531
|
-
canvas.save();
|
|
532
|
-
setLineDash(canvas, linetype, "v", moveX, moveY, toX, toY);
|
|
533
|
-
canvas.strokeStyle = color;
|
|
534
|
-
canvas.stroke();
|
|
535
|
-
canvas.closePath();
|
|
536
|
-
canvas.restore();
|
|
537
|
-
};
|
|
538
|
-
var borderLeftRender_1 = function borderLeftRender_1(style, color, startY, startX, endY, endX, _offsetLeft, _offsetTop, canvas) {
|
|
539
|
-
var linetype = style;
|
|
540
|
-
var moveX = startX - 2 + bodrder05 + _offsetLeft;
|
|
541
|
-
var moveY = startY + _offsetTop - 1;
|
|
542
|
-
var toX = startX - 2 + bodrder05 + _offsetLeft;
|
|
543
|
-
var toY = endY - 2 + bodrder05 + _offsetTop;
|
|
544
|
-
canvas.save();
|
|
545
|
-
setLineDash(canvas, linetype, "v", moveX, moveY, toX, toY);
|
|
546
|
-
canvas.strokeStyle = color;
|
|
547
|
-
canvas.stroke();
|
|
548
|
-
canvas.closePath();
|
|
549
|
-
canvas.restore();
|
|
550
|
-
};
|
|
551
|
-
var borderRightRender_1 = function borderRightRender_1(style, color, startY, startX, endY, endX, _offsetLeft, _offsetTop, canvas) {
|
|
552
|
-
var linetype = style;
|
|
553
|
-
var moveX = endX - 2 + bodrder05 + _offsetLeft;
|
|
554
|
-
var moveY = startY + _offsetTop - 1;
|
|
555
|
-
var toX = endX - 2 + bodrder05 + _offsetLeft;
|
|
556
|
-
var toY = endY - 2 + bodrder05 + _offsetTop;
|
|
557
|
-
canvas.save();
|
|
558
|
-
setLineDash(canvas, linetype, "v", moveX, moveY, toX, toY);
|
|
559
|
-
canvas.strokeStyle = color;
|
|
560
|
-
canvas.stroke();
|
|
561
|
-
canvas.closePath();
|
|
562
|
-
canvas.restore();
|
|
563
|
-
};
|
|
564
|
-
var borderBottomRender_1 = function borderBottomRender_1(style, color, startY, startX, endY, endX, _offsetLeft, _offsetTop, canvas) {
|
|
565
|
-
var linetype = style;
|
|
566
|
-
var moveX = startX - 2 + bodrder05 + _offsetLeft;
|
|
567
|
-
var moveY = endY - 2 + bodrder05 + _offsetTop;
|
|
568
|
-
var toX = endX - 2 + bodrder05 + _offsetLeft;
|
|
569
|
-
var toY = endY - 2 + bodrder05 + _offsetTop;
|
|
570
|
-
canvas.save();
|
|
571
|
-
setLineDash(canvas, linetype, "h", moveX, moveY, toX, toY);
|
|
572
|
-
canvas.strokeStyle = color;
|
|
573
|
-
canvas.stroke();
|
|
574
|
-
canvas.closePath();
|
|
575
|
-
canvas.restore();
|
|
576
|
-
};
|
|
577
|
-
var borderTopRender_1 = function borderTopRender_1(style, color, startY, startX, endY, endX, _offsetLeft, _offsetTop, canvas) {
|
|
578
|
-
var linetype = style;
|
|
579
|
-
var moveX = startX - 2 + bodrder05 + _offsetLeft;
|
|
580
|
-
var moveY = startY - 1 + bodrder05 + _offsetTop;
|
|
581
|
-
var toX = endX - 2 + bodrder05 + _offsetLeft;
|
|
582
|
-
var toY = startY - 1 + bodrder05 + _offsetTop;
|
|
583
|
-
canvas.save();
|
|
584
|
-
setLineDash(canvas, linetype, "h", moveX, moveY, toX, toY);
|
|
585
|
-
canvas.strokeStyle = color;
|
|
586
|
-
canvas.stroke();
|
|
587
|
-
canvas.closePath();
|
|
588
|
-
canvas.restore();
|
|
589
|
-
};
|
|
590
|
-
var borderInfoCompute_1 = (0, _border.getBorderInfoComputeRange)(this.sheetCtx, rowStart, rowEnd, colStart, colEnd);
|
|
591
|
-
Object.keys(borderInfoCompute_1).forEach(function (x) {
|
|
592
|
-
var bdRow = Number(x.substring(0, x.indexOf("_")));
|
|
593
|
-
var bdCol = Number(x.substring(x.indexOf("_") + 1));
|
|
594
|
-
if (borderOffset["".concat(bdRow, "_").concat(bdCol)]) {
|
|
595
|
-
var startY = borderOffset["".concat(bdRow, "_").concat(bdCol)].startY;
|
|
596
|
-
var startX = borderOffset["".concat(bdRow, "_").concat(bdCol)].startX;
|
|
597
|
-
var endY = borderOffset["".concat(bdRow, "_").concat(bdCol)].endY;
|
|
598
|
-
var endX = borderOffset["".concat(bdRow, "_").concat(bdCol)].endX;
|
|
599
|
-
var cellOverflow_colInObj = _this.cellOverflow_colIn(cellOverflowMap, bdRow, bdCol, colStart, colEnd);
|
|
600
|
-
var borderSlash = borderInfoCompute_1[x].s;
|
|
601
|
-
if (borderSlash && (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.stc === bdCol)) {
|
|
602
|
-
var mergeMap = _this.sheetCtx.config.merge;
|
|
603
|
-
var mergeCell = mergeMap === null || mergeMap === void 0 ? void 0 : mergeMap["".concat(bdRow, "_").concat(bdCol)];
|
|
604
|
-
var mergeCellEndX = void 0;
|
|
605
|
-
var mergeCellEndY = void 0;
|
|
606
|
-
if (mergeCell) {
|
|
607
|
-
var mergeCellOffset = borderOffset["".concat(bdRow + mergeCell.rs - 1, "_").concat(bdCol + mergeCell.cs - 1)];
|
|
608
|
-
mergeCellEndX = mergeCellOffset.endX;
|
|
609
|
-
mergeCellEndY = mergeCellOffset.endY;
|
|
610
|
-
}
|
|
611
|
-
borderSlashRender_1(borderSlash.style, borderSlash.color, startY, startX, mergeCellEndY !== null && mergeCellEndY !== void 0 ? mergeCellEndY : endY, mergeCellEndX !== null && mergeCellEndX !== void 0 ? mergeCellEndX : endX, offsetLeft, offsetTop, renderCtx);
|
|
612
|
-
}
|
|
613
|
-
var borderLeft = borderInfoCompute_1[x].l;
|
|
614
|
-
if (borderLeft && (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.stc === bdCol)) {
|
|
615
|
-
borderLeftRender_1(borderLeft.style, borderLeft.color, startY, startX, endY, endX, offsetLeft, offsetTop, renderCtx);
|
|
616
|
-
}
|
|
617
|
-
var borderRight = borderInfoCompute_1[x].r;
|
|
618
|
-
if (borderRight && (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.colLast)) {
|
|
619
|
-
borderRightRender_1(borderRight.style, borderRight.color, startY, startX, endY, endX, offsetLeft, offsetTop, renderCtx);
|
|
620
|
-
}
|
|
621
|
-
var borderTop = borderInfoCompute_1[x].t;
|
|
622
|
-
if (borderTop) {
|
|
623
|
-
borderTopRender_1(borderTop.style, borderTop.color, startY, startX, endY, endX, offsetLeft, offsetTop, renderCtx);
|
|
624
|
-
}
|
|
625
|
-
var borderBottom = borderInfoCompute_1[x].b;
|
|
626
|
-
if (borderBottom) {
|
|
627
|
-
borderBottomRender_1(borderBottom.style, borderBottom.color, startY, startX, endY, endX, offsetLeft, offsetTop, renderCtx);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
});
|
|
631
|
-
}
|
|
632
|
-
if (colEnd === this.sheetCtx.visibledatacolumn.length - 1) {
|
|
633
|
-
renderCtx.clearRect(colEndX - scrollWidth + offsetLeft - 1, offsetTop - 1, this.sheetCtx.ch_width - this.sheetCtx.visibledatacolumn[colEnd], rowEndY - scrollHeight);
|
|
634
|
-
}
|
|
635
|
-
renderCtx.restore();
|
|
636
|
-
this.measureTextCacheTimeOut = setTimeout(function () {
|
|
637
|
-
(0, _text.clearMeasureTextCache)();
|
|
638
|
-
_this.cellOverflowMapCache = {};
|
|
639
|
-
}, 100);
|
|
640
|
-
};
|
|
641
|
-
Canvas.prototype.getCellOverflowMap = function (canvas, colStart, colEnd, rowStart, rowEnd) {
|
|
642
|
-
var _a, _b;
|
|
643
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
644
|
-
var map = {};
|
|
645
|
-
var data = flowdata;
|
|
646
|
-
if (!data) {
|
|
647
|
-
return map;
|
|
648
|
-
}
|
|
649
|
-
for (var r = rowStart; r <= rowEnd; r += 1) {
|
|
650
|
-
if (_lodash.default.isNil(data[r])) {
|
|
651
|
-
continue;
|
|
652
|
-
}
|
|
653
|
-
if (this.cellOverflowMapCache[r]) {
|
|
654
|
-
map[r] = this.cellOverflowMapCache[r];
|
|
655
|
-
continue;
|
|
656
|
-
}
|
|
657
|
-
var hasCellOver = false;
|
|
658
|
-
for (var c = 0; c < data[r].length; c += 1) {
|
|
659
|
-
var cell = data[r][c];
|
|
660
|
-
if (((_b = (_a = this.sheetCtx.config) === null || _a === void 0 ? void 0 : _a.colhidden) === null || _b === void 0 ? void 0 : _b[c]) != null) {
|
|
661
|
-
continue;
|
|
662
|
-
}
|
|
663
|
-
if (cell && (!_lodash.default.isEmpty(cell.v) || (0, _inlineString.isInlineStringCell)(cell)) && _lodash.default.isNil(cell.mc) && cell.tb === "1") {
|
|
664
|
-
var horizonAlign = (0, _cell.normalizedAttr)(data, r, c, "ht");
|
|
665
|
-
var textMetricsObj = (0, _text.getCellTextInfo)(cell, canvas, this.sheetCtx, {
|
|
666
|
-
r: r,
|
|
667
|
-
c: c
|
|
668
|
-
});
|
|
669
|
-
var textMetrics = 0;
|
|
670
|
-
if (textMetricsObj) {
|
|
671
|
-
textMetrics = textMetricsObj.textWidthAll;
|
|
672
|
-
}
|
|
673
|
-
var startX = c - 1 < 0 ? 0 : this.sheetCtx.visibledatacolumn[c - 1];
|
|
674
|
-
var endX = this.sheetCtx.visibledatacolumn[c];
|
|
675
|
-
var stc = void 0;
|
|
676
|
-
var edc = void 0;
|
|
677
|
-
if (endX - startX < textMetrics) {
|
|
678
|
-
if (horizonAlign === "0") {
|
|
679
|
-
var trace_forward = this.cellOverflow_trace(r, c, c - 1, "forward", horizonAlign, textMetrics);
|
|
680
|
-
var trace_backward = this.cellOverflow_trace(r, c, c + 1, "backward", horizonAlign, textMetrics);
|
|
681
|
-
if (trace_forward.success) {
|
|
682
|
-
stc = trace_forward.c;
|
|
683
|
-
} else {
|
|
684
|
-
stc = trace_forward.c + 1;
|
|
685
|
-
}
|
|
686
|
-
if (trace_backward.success) {
|
|
687
|
-
edc = trace_backward.c;
|
|
688
|
-
} else {
|
|
689
|
-
edc = trace_backward.c - 1;
|
|
690
|
-
}
|
|
691
|
-
} else if (horizonAlign === "1") {
|
|
692
|
-
var trace = this.cellOverflow_trace(r, c, c + 1, "backward", horizonAlign, textMetrics);
|
|
693
|
-
stc = c;
|
|
694
|
-
if (trace.success) {
|
|
695
|
-
edc = trace.c;
|
|
696
|
-
} else {
|
|
697
|
-
edc = trace.c - 1;
|
|
698
|
-
}
|
|
699
|
-
} else if (horizonAlign === "2") {
|
|
700
|
-
var trace = this.cellOverflow_trace(r, c, c - 1, "forward", horizonAlign, textMetrics);
|
|
701
|
-
edc = c;
|
|
702
|
-
if (trace.success) {
|
|
703
|
-
stc = trace.c;
|
|
704
|
-
} else {
|
|
705
|
-
stc = trace.c + 1;
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
} else {
|
|
709
|
-
stc = c;
|
|
710
|
-
edc = c;
|
|
711
|
-
}
|
|
712
|
-
if ((stc <= colEnd || edc >= colStart) && stc < edc) {
|
|
713
|
-
var item = {
|
|
714
|
-
r: r,
|
|
715
|
-
stc: stc,
|
|
716
|
-
edc: edc
|
|
717
|
-
};
|
|
718
|
-
if (_lodash.default.isNil(map[r])) {
|
|
719
|
-
map[r] = {};
|
|
720
|
-
}
|
|
721
|
-
map[r][c] = item;
|
|
722
|
-
hasCellOver = true;
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
if (hasCellOver) {
|
|
727
|
-
this.cellOverflowMapCache[r] = map[r];
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
return map;
|
|
731
|
-
};
|
|
732
|
-
Canvas.prototype.nullCellRender = function (r, c, startY, startX, endY, endX, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05, isMerge) {
|
|
733
|
-
var _a, _b, _c, _d, _e, _f;
|
|
734
|
-
if (isMerge === void 0) {
|
|
735
|
-
isMerge = false;
|
|
736
|
-
}
|
|
737
|
-
var checksCF = (0, _modules.checkCF)(r, c, cfCompute);
|
|
738
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
739
|
-
if (!flowdata) return;
|
|
740
|
-
var borderfix = getBorderFix();
|
|
741
|
-
var fillStyle = (0, _cell.normalizedAttr)(flowdata, r, c, "bg");
|
|
742
|
-
if (!_lodash.default.isNil(checksCF) && !_lodash.default.isNil(checksCF.cellColor)) {
|
|
743
|
-
fillStyle = checksCF.cellColor;
|
|
744
|
-
}
|
|
745
|
-
if (!fillStyle) {
|
|
746
|
-
renderCtx.fillStyle = "#FFFFFF";
|
|
747
|
-
} else {
|
|
748
|
-
renderCtx.fillStyle = fillStyle;
|
|
749
|
-
}
|
|
750
|
-
var cellsize = [startX + offsetLeft + borderfix[0], startY + offsetTop + borderfix[1], endX - startX + borderfix[2] - (isMerge ? 1 : 0), endY - startY + borderfix[3]];
|
|
751
|
-
if (((_b = (_a = this.sheetCtx.hooks).beforeRenderCell) === null || _b === void 0 ? void 0 : _b.call(_a, flowdata[r][c], {
|
|
752
|
-
row: r,
|
|
753
|
-
column: c,
|
|
754
|
-
startX: cellsize[0],
|
|
755
|
-
startY: cellsize[1],
|
|
756
|
-
endX: cellsize[2] + cellsize[0],
|
|
757
|
-
endY: cellsize[3] + cellsize[1]
|
|
758
|
-
}, renderCtx)) === false) {
|
|
759
|
-
return;
|
|
760
|
-
}
|
|
761
|
-
renderCtx.fillRect(cellsize[0], cellsize[1], cellsize[2], cellsize[3]);
|
|
762
|
-
if ("".concat(r, "_").concat(c) in dynamicArrayCompute) {
|
|
763
|
-
var value = dynamicArrayCompute["".concat(r, "_").concat(c)].v;
|
|
764
|
-
renderCtx.fillStyle = "#000000";
|
|
765
|
-
var fontset = (0, _text.defaultFont)(this.sheetCtx.defaultFontSize);
|
|
766
|
-
renderCtx.font = fontset;
|
|
767
|
-
var horizonAlignPos = startX + 4 + offsetLeft;
|
|
768
|
-
var verticalAlignPos = endY + offsetTop - 2;
|
|
769
|
-
renderCtx.textBaseline = "bottom";
|
|
770
|
-
renderCtx.fillText(_lodash.default.isNil(value) ? "" : value, horizonAlignPos, verticalAlignPos);
|
|
771
|
-
}
|
|
772
|
-
if ((_d = (_c = flowdata === null || flowdata === void 0 ? void 0 : flowdata[r]) === null || _c === void 0 ? void 0 : _c[c]) === null || _d === void 0 ? void 0 : _d.ps) {
|
|
773
|
-
var ps_w = 12 * this.sheetCtx.zoomRatio;
|
|
774
|
-
var ps_h = 12 * this.sheetCtx.zoomRatio;
|
|
775
|
-
renderCtx.beginPath();
|
|
776
|
-
renderCtx.moveTo(endX + offsetLeft - 1 - ps_w, startY + offsetTop);
|
|
777
|
-
renderCtx.lineTo(endX + offsetLeft - 1, startY + offsetTop);
|
|
778
|
-
renderCtx.lineTo(endX + offsetLeft - 1, startY + offsetTop + ps_h);
|
|
779
|
-
renderCtx.fillStyle = "#EFC703";
|
|
780
|
-
renderCtx.fill();
|
|
781
|
-
renderCtx.closePath();
|
|
782
|
-
}
|
|
783
|
-
var cellOverflow_colInObj = this.cellOverflow_colIn(cellOverflowMap, r, c, colStart, colEnd);
|
|
784
|
-
if (cellOverflow_colInObj.colLast && !_lodash.default.isNil(cellOverflow_colInObj.rowIndex) && !_lodash.default.isNil(cellOverflow_colInObj.colIndex) && !_lodash.default.isNil(cellOverflow_colInObj.stc) && !_lodash.default.isNil(cellOverflow_colInObj.edc)) {
|
|
785
|
-
this.cellOverflowRender(cellOverflow_colInObj.rowIndex, cellOverflow_colInObj.colIndex, cellOverflow_colInObj.stc, cellOverflow_colInObj.edc, renderCtx, scrollHeight, scrollWidth, offsetLeft, offsetTop, afCompute, cfCompute);
|
|
786
|
-
}
|
|
787
|
-
if (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.colLast) {
|
|
788
|
-
if (!this.sheetCtx.luckysheetcurrentisPivotTable && this.sheetCtx.showGridLines) {
|
|
789
|
-
renderCtx.beginPath();
|
|
790
|
-
renderCtx.moveTo(endX + offsetLeft - 2 + bodrder05, startY + offsetTop);
|
|
791
|
-
renderCtx.lineTo(endX + offsetLeft - 2 + bodrder05, endY + offsetTop);
|
|
792
|
-
renderCtx.lineWidth = 1;
|
|
793
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
794
|
-
renderCtx.stroke();
|
|
795
|
-
renderCtx.closePath();
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
if (!this.sheetCtx.luckysheetcurrentisPivotTable && this.sheetCtx.showGridLines) {
|
|
799
|
-
renderCtx.beginPath();
|
|
800
|
-
renderCtx.moveTo(startX + offsetLeft - 1, endY + offsetTop - 2 + bodrder05);
|
|
801
|
-
renderCtx.lineTo(endX + offsetLeft - 1, endY + offsetTop - 2 + bodrder05);
|
|
802
|
-
renderCtx.lineWidth = 1;
|
|
803
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
804
|
-
renderCtx.stroke();
|
|
805
|
-
renderCtx.closePath();
|
|
806
|
-
}
|
|
807
|
-
(_f = (_e = this.sheetCtx.hooks).afterRenderCell) === null || _f === void 0 ? void 0 : _f.call(_e, flowdata[r][c], {
|
|
808
|
-
row: r,
|
|
809
|
-
column: c,
|
|
810
|
-
startY: cellsize[1],
|
|
811
|
-
startX: cellsize[0],
|
|
812
|
-
endY: cellsize[3] + cellsize[1],
|
|
813
|
-
endX: cellsize[2] + cellsize[0]
|
|
814
|
-
}, renderCtx);
|
|
815
|
-
};
|
|
816
|
-
Canvas.prototype.cellRender = function (r, c, startY, startX, endY, endX, value, renderCtx, afCompute, cfCompute, offsetLeft, offsetTop, dynamicArrayCompute, cellOverflowMap, colStart, colEnd, scrollHeight, scrollWidth, bodrder05, isMerge) {
|
|
817
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
818
|
-
if (isMerge === void 0) {
|
|
819
|
-
isMerge = false;
|
|
820
|
-
}
|
|
821
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
822
|
-
if (!flowdata) {
|
|
823
|
-
return;
|
|
824
|
-
}
|
|
825
|
-
var cell = flowdata[r][c];
|
|
826
|
-
var cellWidth = endX - startX - 2;
|
|
827
|
-
var cellHeight = endY - startY - 2;
|
|
828
|
-
var space_width = 2;
|
|
829
|
-
var space_height = 2;
|
|
830
|
-
var horizonAlign = Number((0, _cell.normalizedAttr)(flowdata, r, c, "ht"));
|
|
831
|
-
var verticalAlign = Number((0, _cell.normalizedAttr)(flowdata, r, c, "vt"));
|
|
832
|
-
var checksAF = {};
|
|
833
|
-
var checksCF = (0, _modules.checkCF)(r, c, cfCompute);
|
|
834
|
-
var fillStyle = (0, _cell.normalizedAttr)(flowdata, r, c, "bg");
|
|
835
|
-
if (!_lodash.default.isNil(checksCF) && !_lodash.default.isNil(checksCF.cellColor)) {
|
|
836
|
-
fillStyle = checksCF.cellColor;
|
|
837
|
-
}
|
|
838
|
-
if (!fillStyle) {
|
|
839
|
-
renderCtx.fillStyle = "#FFFFFF";
|
|
840
|
-
} else {
|
|
841
|
-
renderCtx.fillStyle = fillStyle;
|
|
842
|
-
}
|
|
843
|
-
var borderfix = getBorderFix();
|
|
844
|
-
var cellsize = [startX + offsetLeft + borderfix[0], startY + offsetTop + borderfix[1], endX - startX + borderfix[2] - (isMerge ? 1 : 0), endY - startY + borderfix[3]];
|
|
845
|
-
if (((_b = (_a = this.sheetCtx.hooks).beforeRenderCell) === null || _b === void 0 ? void 0 : _b.call(_a, flowdata[r][c], {
|
|
846
|
-
row: r,
|
|
847
|
-
column: c,
|
|
848
|
-
startY: cellsize[1],
|
|
849
|
-
startX: cellsize[0],
|
|
850
|
-
endY: cellsize[3] + cellsize[1],
|
|
851
|
-
endX: cellsize[2] + cellsize[0]
|
|
852
|
-
}, renderCtx)) === false) {
|
|
853
|
-
return;
|
|
854
|
-
}
|
|
855
|
-
renderCtx.fillRect(cellsize[0], cellsize[1], cellsize[2], cellsize[3]);
|
|
856
|
-
var index = (0, _utils.getSheetIndex)(this.sheetCtx, this.sheetCtx.currentSheetId);
|
|
857
|
-
var dataVerification = this.sheetCtx.luckysheetfile[index].dataVerification;
|
|
858
|
-
if ((dataVerification === null || dataVerification === void 0 ? void 0 : dataVerification["".concat(r, "_").concat(c)]) && !(0, _modules.validateCellData)(this.sheetCtx, dataVerification["".concat(r, "_").concat(c)], value)) {
|
|
859
|
-
var dv_w = 9 * this.sheetCtx.zoomRatio;
|
|
860
|
-
var dv_h = 9 * this.sheetCtx.zoomRatio;
|
|
861
|
-
renderCtx.beginPath();
|
|
862
|
-
renderCtx.moveTo(startX + offsetLeft, startY + offsetTop);
|
|
863
|
-
renderCtx.lineTo(startX + offsetLeft + dv_w, startY + offsetTop);
|
|
864
|
-
renderCtx.lineTo(startX + offsetLeft, startY + offsetTop + dv_h);
|
|
865
|
-
renderCtx.fillStyle = "#EFC703";
|
|
866
|
-
renderCtx.fill();
|
|
867
|
-
renderCtx.closePath();
|
|
868
|
-
}
|
|
869
|
-
if (cell === null || cell === void 0 ? void 0 : cell.ps) {
|
|
870
|
-
var ps_w = 12 * this.sheetCtx.zoomRatio;
|
|
871
|
-
var ps_h = 12 * this.sheetCtx.zoomRatio;
|
|
872
|
-
renderCtx.beginPath();
|
|
873
|
-
renderCtx.moveTo(endX + offsetLeft - ps_w, startY + offsetTop);
|
|
874
|
-
renderCtx.lineTo(endX + offsetLeft, startY + offsetTop);
|
|
875
|
-
renderCtx.lineTo(endX + offsetLeft, startY + offsetTop + ps_h);
|
|
876
|
-
renderCtx.fillStyle = "#EFC703";
|
|
877
|
-
renderCtx.fill();
|
|
878
|
-
renderCtx.closePath();
|
|
879
|
-
}
|
|
880
|
-
if ((cell === null || cell === void 0 ? void 0 : cell.qp) === 1 && isRealNum(cell === null || cell === void 0 ? void 0 : cell.v)) {
|
|
881
|
-
var ps_w = 10 * this.sheetCtx.zoomRatio;
|
|
882
|
-
var ps_h = 10 * this.sheetCtx.zoomRatio;
|
|
883
|
-
renderCtx.beginPath();
|
|
884
|
-
renderCtx.moveTo(startX + offsetLeft + ps_w - 1, startY + offsetTop);
|
|
885
|
-
renderCtx.lineTo(startX + offsetLeft - 1, startY + offsetTop);
|
|
886
|
-
renderCtx.lineTo(startX + offsetLeft - 1, startY + offsetTop + ps_h);
|
|
887
|
-
renderCtx.fillStyle = "#487f1e";
|
|
888
|
-
renderCtx.fill();
|
|
889
|
-
renderCtx.closePath();
|
|
890
|
-
}
|
|
891
|
-
var cellOverflow_bd_r_render = true;
|
|
892
|
-
var cellOverflow_colInObj = this.cellOverflow_colIn(cellOverflowMap, r, c, colStart, colEnd);
|
|
893
|
-
if ((cell === null || cell === void 0 ? void 0 : cell.tb) === "1" && cellOverflow_colInObj.colIn) {
|
|
894
|
-
if (cellOverflow_colInObj.colLast && !_lodash.default.isNil(cellOverflow_colInObj.rowIndex) && !_lodash.default.isNil(cellOverflow_colInObj.colIndex) && !_lodash.default.isNil(cellOverflow_colInObj.stc) && !_lodash.default.isNil(cellOverflow_colInObj.edc)) {
|
|
895
|
-
this.cellOverflowRender(cellOverflow_colInObj.rowIndex, cellOverflow_colInObj.colIndex, cellOverflow_colInObj.stc, cellOverflow_colInObj.edc, renderCtx, scrollHeight, scrollWidth, offsetLeft, offsetTop, afCompute, cfCompute);
|
|
896
|
-
} else {
|
|
897
|
-
cellOverflow_bd_r_render = false;
|
|
898
|
-
}
|
|
899
|
-
} else if (((_c = dataVerification === null || dataVerification === void 0 ? void 0 : dataVerification["".concat(r, "_").concat(c)]) === null || _c === void 0 ? void 0 : _c.type) === "checkbox") {
|
|
900
|
-
var pos_x = startX + offsetLeft;
|
|
901
|
-
var pos_y = startY + offsetTop + 1;
|
|
902
|
-
renderCtx.save();
|
|
903
|
-
renderCtx.beginPath();
|
|
904
|
-
renderCtx.rect(pos_x, pos_y, cellWidth, cellHeight);
|
|
905
|
-
renderCtx.clip();
|
|
906
|
-
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
907
|
-
var measureText = (0, _text.getMeasureText)(value, renderCtx, this.sheetCtx);
|
|
908
|
-
var textMetrics = measureText.width + 14;
|
|
909
|
-
var oneLineTextHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
|
|
910
|
-
var horizonAlignPos = pos_x + space_width;
|
|
911
|
-
if (horizonAlign === 0) {
|
|
912
|
-
horizonAlignPos = pos_x + cellWidth / 2 - textMetrics / 2;
|
|
913
|
-
} else if (horizonAlign === 2) {
|
|
914
|
-
horizonAlignPos = pos_x + cellWidth - space_width - textMetrics;
|
|
915
|
-
}
|
|
916
|
-
var verticalCellHeight = cellHeight > oneLineTextHeight ? cellHeight : oneLineTextHeight;
|
|
917
|
-
var verticalAlignPos_text = pos_y + verticalCellHeight - space_height;
|
|
918
|
-
renderCtx.textBaseline = "bottom";
|
|
919
|
-
var verticalAlignPos_checkbox = verticalAlignPos_text - 13 * this.sheetCtx.zoomRatio;
|
|
920
|
-
if (verticalAlign === 0) {
|
|
921
|
-
verticalAlignPos_text = pos_y + verticalCellHeight / 2;
|
|
922
|
-
renderCtx.textBaseline = "middle";
|
|
923
|
-
verticalAlignPos_checkbox = verticalAlignPos_text - 6 * this.sheetCtx.zoomRatio;
|
|
924
|
-
} else if (verticalAlign === 1) {
|
|
925
|
-
verticalAlignPos_text = pos_y + space_height;
|
|
926
|
-
renderCtx.textBaseline = "top";
|
|
927
|
-
verticalAlignPos_checkbox = verticalAlignPos_text + 1 * this.sheetCtx.zoomRatio;
|
|
928
|
-
}
|
|
929
|
-
horizonAlignPos /= this.sheetCtx.zoomRatio;
|
|
930
|
-
verticalAlignPos_text /= this.sheetCtx.zoomRatio;
|
|
931
|
-
verticalAlignPos_checkbox /= this.sheetCtx.zoomRatio;
|
|
932
|
-
renderCtx.lineWidth = 2;
|
|
933
|
-
renderCtx.strokeStyle = "#000";
|
|
934
|
-
renderCtx.beginPath();
|
|
935
|
-
renderCtx.roundRect(horizonAlignPos, verticalAlignPos_checkbox, 12, 12, 2);
|
|
936
|
-
renderCtx.stroke();
|
|
937
|
-
if (dataVerification["".concat(r, "_").concat(c)].checked) {
|
|
938
|
-
renderCtx.save();
|
|
939
|
-
renderCtx.beginPath();
|
|
940
|
-
renderCtx.roundRect(horizonAlignPos, verticalAlignPos_checkbox, 12, 12, 2);
|
|
941
|
-
renderCtx.fillStyle = "#000";
|
|
942
|
-
renderCtx.fill();
|
|
943
|
-
renderCtx.restore();
|
|
944
|
-
renderCtx.save();
|
|
945
|
-
renderCtx.beginPath();
|
|
946
|
-
renderCtx.strokeStyle = "#fff";
|
|
947
|
-
renderCtx.lineWidth = 2;
|
|
948
|
-
renderCtx.lineJoin = "round";
|
|
949
|
-
renderCtx.moveTo(horizonAlignPos + 3, verticalAlignPos_checkbox + 6);
|
|
950
|
-
renderCtx.lineTo(horizonAlignPos + 5.5, verticalAlignPos_checkbox + 9);
|
|
951
|
-
renderCtx.lineTo(horizonAlignPos + 9, verticalAlignPos_checkbox + 3.5);
|
|
952
|
-
renderCtx.stroke();
|
|
953
|
-
renderCtx.closePath();
|
|
954
|
-
renderCtx.restore();
|
|
955
|
-
}
|
|
956
|
-
renderCtx.fillStyle = (0, _cell.normalizedAttr)(flowdata, r, c, "fc");
|
|
957
|
-
renderCtx.fillText(_lodash.default.isNil(value) ? "" : value, horizonAlignPos + 18, verticalAlignPos_text);
|
|
958
|
-
renderCtx.restore();
|
|
959
|
-
} else {
|
|
960
|
-
if (((_d = checksCF === null || checksCF === void 0 ? void 0 : checksCF.dataBar) === null || _d === void 0 ? void 0 : _d.valueLen) && ((_f = (_e = checksCF === null || checksCF === void 0 ? void 0 : checksCF.dataBar) === null || _e === void 0 ? void 0 : _e.valueLen) === null || _f === void 0 ? void 0 : _f.toString()) !== "NaN") {
|
|
961
|
-
var x = startX + offsetLeft + space_width;
|
|
962
|
-
var y = startY + offsetTop + space_height;
|
|
963
|
-
var w = cellWidth - space_width * 2;
|
|
964
|
-
var h = cellHeight - space_height * 2;
|
|
965
|
-
var valueType = checksCF.dataBar.valueType;
|
|
966
|
-
var valueLen = checksCF.dataBar.valueLen;
|
|
967
|
-
var format = checksCF.dataBar.format;
|
|
968
|
-
if (valueType === "minus") {
|
|
969
|
-
var minusLen = checksCF.dataBar.minusLen;
|
|
970
|
-
if (format.length > 1) {
|
|
971
|
-
var my_gradient = renderCtx.createLinearGradient(x + w * minusLen * (1 - valueLen), y, x + w * minusLen, y);
|
|
972
|
-
my_gradient.addColorStop(0, "#ffffff");
|
|
973
|
-
my_gradient.addColorStop(1, "#ff0000");
|
|
974
|
-
renderCtx.fillStyle = my_gradient;
|
|
975
|
-
} else {
|
|
976
|
-
renderCtx.fillStyle = "#ff0000";
|
|
977
|
-
}
|
|
978
|
-
renderCtx.fillRect(x + w * minusLen * (1 - valueLen), y, w * minusLen * valueLen, h);
|
|
979
|
-
renderCtx.beginPath();
|
|
980
|
-
renderCtx.moveTo(x + w * minusLen * (1 - valueLen), y);
|
|
981
|
-
renderCtx.lineTo(x + w * minusLen * (1 - valueLen), y + h);
|
|
982
|
-
renderCtx.lineTo(x + w * minusLen, y + h);
|
|
983
|
-
renderCtx.lineTo(x + w * minusLen, y);
|
|
984
|
-
renderCtx.lineTo(x + w * minusLen * (1 - valueLen), y);
|
|
985
|
-
renderCtx.lineWidth = 1;
|
|
986
|
-
renderCtx.strokeStyle = "#ff0000";
|
|
987
|
-
renderCtx.stroke();
|
|
988
|
-
renderCtx.closePath();
|
|
989
|
-
} else if (valueType === "plus") {
|
|
990
|
-
var plusLen = checksCF.dataBar.plusLen;
|
|
991
|
-
if (plusLen === 1) {
|
|
992
|
-
if (format.length > 1) {
|
|
993
|
-
var my_gradient = renderCtx.createLinearGradient(x, y, x + w * valueLen, y);
|
|
994
|
-
my_gradient.addColorStop(0, format[0]);
|
|
995
|
-
my_gradient.addColorStop(1, format[1]);
|
|
996
|
-
renderCtx.fillStyle = my_gradient;
|
|
997
|
-
} else {
|
|
998
|
-
renderCtx.fillStyle = format[0];
|
|
999
|
-
}
|
|
1000
|
-
renderCtx.fillRect(x, y, w * valueLen, h);
|
|
1001
|
-
renderCtx.beginPath();
|
|
1002
|
-
renderCtx.moveTo(x, y);
|
|
1003
|
-
renderCtx.lineTo(x, y + h);
|
|
1004
|
-
renderCtx.lineTo(x + w * valueLen, y + h);
|
|
1005
|
-
renderCtx.lineTo(x + w * valueLen, y);
|
|
1006
|
-
renderCtx.lineTo(x, y);
|
|
1007
|
-
renderCtx.lineWidth = 1;
|
|
1008
|
-
renderCtx.strokeStyle = format[0];
|
|
1009
|
-
renderCtx.stroke();
|
|
1010
|
-
renderCtx.closePath();
|
|
1011
|
-
} else {
|
|
1012
|
-
var minusLen = checksCF.dataBar.minusLen;
|
|
1013
|
-
if (format.length > 1) {
|
|
1014
|
-
var my_gradient = renderCtx.createLinearGradient(x + w * minusLen, y, x + w * minusLen + w * plusLen * valueLen, y);
|
|
1015
|
-
my_gradient.addColorStop(0, format[0]);
|
|
1016
|
-
my_gradient.addColorStop(1, format[1]);
|
|
1017
|
-
renderCtx.fillStyle = my_gradient;
|
|
1018
|
-
} else {
|
|
1019
|
-
renderCtx.fillStyle = format[0];
|
|
1020
|
-
}
|
|
1021
|
-
renderCtx.fillRect(x + w * minusLen, y, w * plusLen * valueLen, h);
|
|
1022
|
-
renderCtx.beginPath();
|
|
1023
|
-
renderCtx.moveTo(x + w * minusLen, y);
|
|
1024
|
-
renderCtx.lineTo(x + w * minusLen, y + h);
|
|
1025
|
-
renderCtx.lineTo(x + w * minusLen + w * plusLen * valueLen, y + h);
|
|
1026
|
-
renderCtx.lineTo(x + w * minusLen + w * plusLen * valueLen, y);
|
|
1027
|
-
renderCtx.lineTo(x + w * minusLen, y);
|
|
1028
|
-
renderCtx.lineWidth = 1;
|
|
1029
|
-
renderCtx.strokeStyle = format[0];
|
|
1030
|
-
renderCtx.stroke();
|
|
1031
|
-
renderCtx.closePath();
|
|
1032
|
-
}
|
|
1033
|
-
}
|
|
1034
|
-
}
|
|
1035
|
-
var pos_x = startX + offsetLeft;
|
|
1036
|
-
var pos_y = startY + offsetTop + 1;
|
|
1037
|
-
renderCtx.save();
|
|
1038
|
-
renderCtx.beginPath();
|
|
1039
|
-
renderCtx.rect(pos_x, pos_y, cellWidth, cellHeight);
|
|
1040
|
-
renderCtx.clip();
|
|
1041
|
-
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
1042
|
-
var textInfo = cell ? (0, _text.getCellTextInfo)(cell, renderCtx, this.sheetCtx, {
|
|
1043
|
-
cellWidth: cellWidth,
|
|
1044
|
-
cellHeight: cellHeight,
|
|
1045
|
-
space_width: space_width,
|
|
1046
|
-
space_height: space_height,
|
|
1047
|
-
r: r,
|
|
1048
|
-
c: c
|
|
1049
|
-
}, this.sheetCtx) : undefined;
|
|
1050
|
-
if ((checksCF === null || checksCF === void 0 ? void 0 : checksCF.icons) && textInfo.type === "plain") {
|
|
1051
|
-
var l = checksCF.icons.left;
|
|
1052
|
-
var t = checksCF.icons.top;
|
|
1053
|
-
var _value = textInfo.values[0];
|
|
1054
|
-
var verticalAlignPos = pos_y + _value.top - textInfo.textHeightAll;
|
|
1055
|
-
if (verticalAlign === 0) {
|
|
1056
|
-
verticalAlignPos = pos_y + cellHeight / 2 - textInfo.textHeightAll / 2;
|
|
1057
|
-
} else if (verticalAlign === 1) {
|
|
1058
|
-
verticalAlignPos = pos_y;
|
|
1059
|
-
} else if (verticalAlign === 2) {
|
|
1060
|
-
verticalAlignPos -= textInfo.desc;
|
|
1061
|
-
}
|
|
1062
|
-
verticalAlignPos /= this.sheetCtx.zoomRatio;
|
|
1063
|
-
renderCtx.drawImage(getCfIconsImg(), l * 42, t * 32, 32, 32, pos_x / this.sheetCtx.zoomRatio, verticalAlignPos, textInfo.textHeightAll / this.sheetCtx.zoomRatio, textInfo.textHeightAll / this.sheetCtx.zoomRatio);
|
|
1064
|
-
}
|
|
1065
|
-
renderCtx.fillStyle = (0, _cell.normalizedAttr)(flowdata, r, c, "fc");
|
|
1066
|
-
if (checksAF === null || checksAF === void 0 ? void 0 : checksAF[0]) {
|
|
1067
|
-
renderCtx.fillStyle = checksAF[0];
|
|
1068
|
-
}
|
|
1069
|
-
if (checksCF === null || checksCF === void 0 ? void 0 : checksCF.textColor) {
|
|
1070
|
-
renderCtx.fillStyle = checksCF.textColor;
|
|
1071
|
-
}
|
|
1072
|
-
if (((_j = (_h = (_g = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _g === void 0 ? void 0 : _g.fa) === null || _h === void 0 ? void 0 : _h.indexOf("[Red]")) !== null && _j !== void 0 ? _j : -1) > -1 && ((_k = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _k === void 0 ? void 0 : _k.t) === "n" && (cell === null || cell === void 0 ? void 0 : cell.v) < 0) {
|
|
1073
|
-
renderCtx.fillStyle = "#ff0000";
|
|
1074
|
-
}
|
|
1075
|
-
this.cellTextRender(textInfo, renderCtx, {
|
|
1076
|
-
pos_x: pos_x,
|
|
1077
|
-
pos_y: pos_y
|
|
1078
|
-
});
|
|
1079
|
-
renderCtx.restore();
|
|
1080
|
-
}
|
|
1081
|
-
if (cellOverflow_bd_r_render) {
|
|
1082
|
-
if (!this.sheetCtx.luckysheetcurrentisPivotTable && this.sheetCtx.showGridLines) {
|
|
1083
|
-
renderCtx.beginPath();
|
|
1084
|
-
renderCtx.moveTo(endX + offsetLeft - 2 + bodrder05, startY + offsetTop);
|
|
1085
|
-
renderCtx.lineTo(endX + offsetLeft - 2 + bodrder05, endY + offsetTop);
|
|
1086
|
-
renderCtx.lineWidth = 1;
|
|
1087
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
1088
|
-
renderCtx.stroke();
|
|
1089
|
-
renderCtx.closePath();
|
|
1090
|
-
}
|
|
1091
|
-
}
|
|
1092
|
-
if (!this.sheetCtx.luckysheetcurrentisPivotTable && this.sheetCtx.showGridLines) {
|
|
1093
|
-
renderCtx.beginPath();
|
|
1094
|
-
renderCtx.moveTo(startX + offsetLeft - 1, endY + offsetTop - 2 + bodrder05);
|
|
1095
|
-
renderCtx.lineTo(endX + offsetLeft - 1, endY + offsetTop - 2 + bodrder05);
|
|
1096
|
-
renderCtx.lineWidth = 1;
|
|
1097
|
-
renderCtx.strokeStyle = defaultStyle.strokeStyle;
|
|
1098
|
-
renderCtx.stroke();
|
|
1099
|
-
renderCtx.closePath();
|
|
1100
|
-
}
|
|
1101
|
-
(_m = (_l = this.sheetCtx.hooks).afterRenderCell) === null || _m === void 0 ? void 0 : _m.call(_l, (_o = flowdata[r]) === null || _o === void 0 ? void 0 : _o[c], {
|
|
1102
|
-
row: r,
|
|
1103
|
-
column: c,
|
|
1104
|
-
startX: cellsize[0],
|
|
1105
|
-
startY: cellsize[1],
|
|
1106
|
-
endX: cellsize[2] + cellsize[0],
|
|
1107
|
-
endY: cellsize[3] + cellsize[1]
|
|
1108
|
-
}, renderCtx);
|
|
1109
|
-
};
|
|
1110
|
-
Canvas.prototype.cellOverflowRender = function (r, c, stc, edc, renderCtx, scrollHeight, scrollWidth, offsetLeft, offsetTop, afCompute, cfCompute) {
|
|
1111
|
-
var startY;
|
|
1112
|
-
if (r === 0) {
|
|
1113
|
-
startY = -scrollHeight - 1;
|
|
1114
|
-
} else {
|
|
1115
|
-
startY = this.sheetCtx.visibledatarow[r - 1] - scrollHeight - 1;
|
|
1116
|
-
}
|
|
1117
|
-
var endY = this.sheetCtx.visibledatarow[r] - scrollHeight;
|
|
1118
|
-
var startX;
|
|
1119
|
-
if (stc === 0) {
|
|
1120
|
-
startX = -scrollWidth;
|
|
1121
|
-
} else {
|
|
1122
|
-
startX = this.sheetCtx.visibledatacolumn[stc - 1] - scrollWidth;
|
|
1123
|
-
}
|
|
1124
|
-
var endX = this.sheetCtx.visibledatacolumn[edc] - scrollWidth;
|
|
1125
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
1126
|
-
if (!flowdata) {
|
|
1127
|
-
return;
|
|
1128
|
-
}
|
|
1129
|
-
var cell = flowdata[r][c];
|
|
1130
|
-
var cellWidth = endX - startX - 2;
|
|
1131
|
-
var cellHeight = endY - startY - 2;
|
|
1132
|
-
var space_width = 2;
|
|
1133
|
-
var space_height = 2;
|
|
1134
|
-
var pos_x = startX + offsetLeft;
|
|
1135
|
-
var pos_y = startY + offsetTop + 1;
|
|
1136
|
-
var fontset = (0, _text.getFontSet)(cell, this.sheetCtx.defaultFontSize, this.sheetCtx);
|
|
1137
|
-
renderCtx.font = fontset;
|
|
1138
|
-
renderCtx.save();
|
|
1139
|
-
renderCtx.beginPath();
|
|
1140
|
-
renderCtx.rect(pos_x, pos_y, cellWidth, cellHeight);
|
|
1141
|
-
renderCtx.clip();
|
|
1142
|
-
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
1143
|
-
var textInfo = cell ? (0, _text.getCellTextInfo)(cell, renderCtx, this.sheetCtx, {
|
|
1144
|
-
cellWidth: cellWidth,
|
|
1145
|
-
cellHeight: cellHeight,
|
|
1146
|
-
space_width: space_width,
|
|
1147
|
-
space_height: space_height,
|
|
1148
|
-
r: r,
|
|
1149
|
-
c: c
|
|
1150
|
-
}, this.sheetCtx) : undefined;
|
|
1151
|
-
var checksAF = {};
|
|
1152
|
-
var checksCF = (0, _modules.checkCF)(r, c, cfCompute);
|
|
1153
|
-
renderCtx.fillStyle = (0, _cell.normalizedAttr)(flowdata, r, c, "fc");
|
|
1154
|
-
if (checksAF === null || checksAF === void 0 ? void 0 : checksAF[0]) {
|
|
1155
|
-
renderCtx.fillStyle = checksAF[0];
|
|
1156
|
-
}
|
|
1157
|
-
if (checksCF === null || checksCF === void 0 ? void 0 : checksCF.textColor) {
|
|
1158
|
-
renderCtx.fillStyle = checksCF.textColor;
|
|
1159
|
-
}
|
|
1160
|
-
this.cellTextRender(textInfo, renderCtx, {
|
|
1161
|
-
pos_x: pos_x,
|
|
1162
|
-
pos_y: pos_y
|
|
1163
|
-
});
|
|
1164
|
-
renderCtx.restore();
|
|
1165
|
-
};
|
|
1166
|
-
Canvas.prototype.cellOverflow_trace = function (r, curC, traceC, traceDir, horizonAlign, textMetrics) {
|
|
1167
|
-
var flowdata = (0, _context.getFlowdata)(this.sheetCtx);
|
|
1168
|
-
if (!flowdata) return {};
|
|
1169
|
-
var data = flowdata;
|
|
1170
|
-
if (traceDir === "forward" && traceC < 0) {
|
|
1171
|
-
return {
|
|
1172
|
-
success: false,
|
|
1173
|
-
r: r,
|
|
1174
|
-
c: traceC
|
|
1175
|
-
};
|
|
1176
|
-
}
|
|
1177
|
-
if (traceDir === "backward" && traceC > data[r].length - 1) {
|
|
1178
|
-
return {
|
|
1179
|
-
success: false,
|
|
1180
|
-
r: r,
|
|
1181
|
-
c: traceC
|
|
1182
|
-
};
|
|
1183
|
-
}
|
|
1184
|
-
var cell = data[r][traceC];
|
|
1185
|
-
if (cell && (!_lodash.default.isEmpty(cell.v) || cell.mc)) {
|
|
1186
|
-
return {
|
|
1187
|
-
success: false,
|
|
1188
|
-
r: r,
|
|
1189
|
-
c: traceC
|
|
1190
|
-
};
|
|
1191
|
-
}
|
|
1192
|
-
var start_curC = curC - 1 < 0 ? 0 : this.sheetCtx.visibledatacolumn[curC - 1];
|
|
1193
|
-
var end_curC = this.sheetCtx.visibledatacolumn[curC];
|
|
1194
|
-
var w = textMetrics - (end_curC - start_curC);
|
|
1195
|
-
if (horizonAlign === "0") {
|
|
1196
|
-
start_curC -= w / 2;
|
|
1197
|
-
end_curC += w / 2;
|
|
1198
|
-
} else if (horizonAlign === "1") {
|
|
1199
|
-
end_curC += w;
|
|
1200
|
-
} else if (horizonAlign === "2") {
|
|
1201
|
-
start_curC -= w;
|
|
1202
|
-
}
|
|
1203
|
-
var start_traceC = traceC - 1 < 0 ? 0 : this.sheetCtx.visibledatacolumn[traceC - 1];
|
|
1204
|
-
var end_traceC = this.sheetCtx.visibledatacolumn[traceC];
|
|
1205
|
-
if (traceDir === "forward") {
|
|
1206
|
-
if (start_curC < start_traceC) {
|
|
1207
|
-
return this.cellOverflow_trace(r, curC, traceC - 1, traceDir, horizonAlign, textMetrics);
|
|
1208
|
-
}
|
|
1209
|
-
if (start_curC < end_traceC) {
|
|
1210
|
-
return {
|
|
1211
|
-
success: true,
|
|
1212
|
-
r: r,
|
|
1213
|
-
c: traceC
|
|
1214
|
-
};
|
|
1215
|
-
}
|
|
1216
|
-
return {
|
|
1217
|
-
success: false,
|
|
1218
|
-
r: r,
|
|
1219
|
-
c: traceC
|
|
1220
|
-
};
|
|
1221
|
-
}
|
|
1222
|
-
if (traceDir === "backward") {
|
|
1223
|
-
if (end_curC > end_traceC) {
|
|
1224
|
-
return this.cellOverflow_trace(r, curC, traceC + 1, traceDir, horizonAlign, textMetrics);
|
|
1225
|
-
}
|
|
1226
|
-
if (end_curC > start_traceC) {
|
|
1227
|
-
return {
|
|
1228
|
-
success: true,
|
|
1229
|
-
r: r,
|
|
1230
|
-
c: traceC
|
|
1231
|
-
};
|
|
1232
|
-
}
|
|
1233
|
-
return {
|
|
1234
|
-
success: false,
|
|
1235
|
-
r: r,
|
|
1236
|
-
c: traceC
|
|
1237
|
-
};
|
|
1238
|
-
}
|
|
1239
|
-
return null;
|
|
1240
|
-
};
|
|
1241
|
-
Canvas.prototype.cellOverflow_colIn = function (map, r, c, col_st, col_ed) {
|
|
1242
|
-
var colIn = false;
|
|
1243
|
-
var colLast = false;
|
|
1244
|
-
var rowIndex;
|
|
1245
|
-
var colIndex;
|
|
1246
|
-
var stc;
|
|
1247
|
-
var edc;
|
|
1248
|
-
_lodash.default.forEach(map, function (row, rkey) {
|
|
1249
|
-
_lodash.default.forEach(row, function (mapItem, ckey) {
|
|
1250
|
-
rowIndex = Number(rkey);
|
|
1251
|
-
colIndex = Number(ckey);
|
|
1252
|
-
stc = mapItem.stc;
|
|
1253
|
-
edc = mapItem.edc;
|
|
1254
|
-
if (rowIndex === r) {
|
|
1255
|
-
if (c >= stc && c <= edc) {
|
|
1256
|
-
colIn = true;
|
|
1257
|
-
if (c === edc || c === col_ed) {
|
|
1258
|
-
colLast = true;
|
|
1259
|
-
return false;
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1263
|
-
return true;
|
|
1264
|
-
});
|
|
1265
|
-
return !colLast;
|
|
1266
|
-
});
|
|
1267
|
-
return {
|
|
1268
|
-
colIn: colIn,
|
|
1269
|
-
colLast: colLast,
|
|
1270
|
-
rowIndex: rowIndex,
|
|
1271
|
-
colIndex: colIndex,
|
|
1272
|
-
stc: stc,
|
|
1273
|
-
edc: edc
|
|
1274
|
-
};
|
|
1275
|
-
};
|
|
1276
|
-
Canvas.prototype.cellTextRender = function (textInfo, ctx, option) {
|
|
1277
|
-
if (!textInfo) {
|
|
1278
|
-
return;
|
|
1279
|
-
}
|
|
1280
|
-
var values = textInfo.values;
|
|
1281
|
-
var pos_x = option.pos_x;
|
|
1282
|
-
var pos_y = option.pos_y;
|
|
1283
|
-
if (!values) {
|
|
1284
|
-
return;
|
|
1285
|
-
}
|
|
1286
|
-
if (textInfo.rotate !== 0 && textInfo.type !== "verticalWrap") {
|
|
1287
|
-
ctx.save();
|
|
1288
|
-
ctx.translate((pos_x + textInfo.textLeftAll) / this.sheetCtx.zoomRatio, (pos_y + textInfo.textTopAll) / this.sheetCtx.zoomRatio);
|
|
1289
|
-
ctx.rotate(-textInfo.rotate * Math.PI / 180);
|
|
1290
|
-
ctx.translate(-(textInfo.textLeftAll + pos_x) / this.sheetCtx.zoomRatio, -(pos_y + textInfo.textTopAll) / this.sheetCtx.zoomRatio);
|
|
1291
|
-
}
|
|
1292
|
-
for (var i = 0; i < values.length; i += 1) {
|
|
1293
|
-
var word = values[i];
|
|
1294
|
-
if (word.inline === true && word.style) {
|
|
1295
|
-
ctx.font = word.style.fontset;
|
|
1296
|
-
ctx.fillStyle = word.style.fc;
|
|
1297
|
-
} else {
|
|
1298
|
-
ctx.font = word.style;
|
|
1299
|
-
}
|
|
1300
|
-
var txt = _lodash.default.isPlainObject(word.content) ? word.content.m : word.content;
|
|
1301
|
-
ctx.fillText(txt, (pos_x + word.left) / this.sheetCtx.zoomRatio, (pos_y + word.top) / this.sheetCtx.zoomRatio);
|
|
1302
|
-
if (word.cancelLine) {
|
|
1303
|
-
var c = word.cancelLine;
|
|
1304
|
-
ctx.beginPath();
|
|
1305
|
-
ctx.moveTo(Math.floor((pos_x + c.startX) / this.sheetCtx.zoomRatio) + 0.5, Math.floor((pos_y + c.startY) / this.sheetCtx.zoomRatio) + 0.5);
|
|
1306
|
-
ctx.lineTo(Math.floor((pos_x + c.endX) / this.sheetCtx.zoomRatio) + 0.5, Math.floor((pos_y + c.endY) / this.sheetCtx.zoomRatio) + 0.5);
|
|
1307
|
-
ctx.lineWidth = Math.floor(c.fs / 9);
|
|
1308
|
-
ctx.strokeStyle = ctx.fillStyle;
|
|
1309
|
-
ctx.stroke();
|
|
1310
|
-
ctx.closePath();
|
|
1311
|
-
}
|
|
1312
|
-
if (word.underLine) {
|
|
1313
|
-
var underLines = word.underLine;
|
|
1314
|
-
for (var a = 0; a < underLines.length; a += 1) {
|
|
1315
|
-
var item = underLines[a];
|
|
1316
|
-
ctx.beginPath();
|
|
1317
|
-
ctx.moveTo(Math.floor((pos_x + item.startX) / this.sheetCtx.zoomRatio) + 0.5, Math.floor((pos_y + item.startY) / this.sheetCtx.zoomRatio));
|
|
1318
|
-
ctx.lineTo(Math.floor((pos_x + item.endX) / this.sheetCtx.zoomRatio) + 0.5, Math.floor((pos_y + item.endY) / this.sheetCtx.zoomRatio) + 0.5);
|
|
1319
|
-
ctx.lineWidth = Math.floor(item.fs / 9);
|
|
1320
|
-
ctx.strokeStyle = ctx.fillStyle;
|
|
1321
|
-
ctx.stroke();
|
|
1322
|
-
ctx.closePath();
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
if (textInfo.rotate !== 0 && textInfo.type !== "verticalWrap") {
|
|
1327
|
-
ctx.restore();
|
|
1328
|
-
}
|
|
1329
|
-
};
|
|
1330
|
-
Canvas.prototype.drawFreezeLine = function (_a) {
|
|
1331
|
-
var horizontalTop = _a.horizontalTop,
|
|
1332
|
-
verticalLeft = _a.verticalLeft;
|
|
1333
|
-
var renderCtx = this.canvasElement.getContext("2d");
|
|
1334
|
-
if (!renderCtx) return;
|
|
1335
|
-
renderCtx.save();
|
|
1336
|
-
renderCtx.scale(this.sheetCtx.devicePixelRatio, this.sheetCtx.devicePixelRatio);
|
|
1337
|
-
renderCtx.strokeStyle = "#ccc";
|
|
1338
|
-
renderCtx.lineWidth = 2;
|
|
1339
|
-
if (horizontalTop) {
|
|
1340
|
-
renderCtx.beginPath();
|
|
1341
|
-
renderCtx.moveTo(0, horizontalTop);
|
|
1342
|
-
renderCtx.lineTo(this.canvasElement.width, horizontalTop);
|
|
1343
|
-
renderCtx.stroke();
|
|
1344
|
-
renderCtx.closePath();
|
|
1345
|
-
}
|
|
1346
|
-
if (verticalLeft) {
|
|
1347
|
-
renderCtx.beginPath();
|
|
1348
|
-
renderCtx.moveTo(verticalLeft, 0);
|
|
1349
|
-
renderCtx.lineTo(verticalLeft, this.canvasElement.height);
|
|
1350
|
-
renderCtx.stroke();
|
|
1351
|
-
renderCtx.closePath();
|
|
1352
|
-
}
|
|
1353
|
-
renderCtx.restore();
|
|
1354
|
-
};
|
|
1355
|
-
return Canvas;
|
|
1356
|
-
}();
|