@visactor/vtable 1.5.7-alpha.1 → 1.5.7
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/cjs/ListTable-all.js +5 -5
- package/cjs/ListTable-all.js.map +1 -1
- package/cjs/ListTable.d.ts +3 -0
- package/cjs/ListTable.js +41 -284
- package/cjs/ListTable.js.map +1 -1
- package/cjs/body-helper/style/Style.d.ts +2 -2
- package/cjs/body-helper/style/Style.js.map +1 -1
- package/cjs/components/title/title.js +3 -1
- package/cjs/components/title/title.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +5 -3
- package/cjs/core/BaseTable.js +13 -83
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/group-helper.d.ts +6 -0
- package/cjs/core/group-helper.js +22 -0
- package/cjs/core/group-helper.js.map +1 -0
- package/cjs/core/record-helper.d.ts +8 -0
- package/cjs/core/record-helper.js +337 -0
- package/cjs/core/record-helper.js.map +1 -0
- package/cjs/core/style-helper.d.ts +3 -0
- package/cjs/core/style-helper.js +110 -0
- package/cjs/core/style-helper.js.map +1 -0
- package/cjs/core/tableHelper.d.ts +0 -2
- package/cjs/core/tableHelper.js +15 -19
- package/cjs/core/tableHelper.js.map +1 -1
- package/cjs/data/CachedDataSource.d.ts +10 -1
- package/cjs/data/CachedDataSource.js +102 -3
- package/cjs/data/CachedDataSource.js.map +1 -1
- package/cjs/dataset/dataset.js +0 -1
- package/cjs/edit/edit-manager.js +2 -1
- package/cjs/event/event.js +3 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/header-helper/style/Style.d.ts +2 -2
- package/cjs/header-helper/style/Style.js.map +1 -1
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +25 -2
- package/cjs/index.js.map +1 -1
- package/cjs/layout/cell-range/simple-cell-range.d.ts +4 -0
- package/cjs/layout/cell-range/simple-cell-range.js +106 -0
- package/cjs/layout/cell-range/simple-cell-range.js.map +1 -0
- package/cjs/layout/layout-helper.js +2 -2
- package/cjs/layout/layout-helper.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +4 -2
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/row-height-map.js +1 -0
- package/cjs/layout/simple-header-layout.d.ts +1 -2
- package/cjs/layout/simple-header-layout.js +6 -90
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/plugins/icons.js +1 -1
- package/cjs/plugins/list-tree-stick-cell.d.ts +16 -0
- package/cjs/plugins/list-tree-stick-cell.js +178 -0
- package/cjs/plugins/list-tree-stick-cell.js.map +1 -0
- package/cjs/plugins/themes.js +1 -1
- package/cjs/scenegraph/component/custom.js +1 -1
- package/cjs/scenegraph/component/custom.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +6 -3
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.d.ts +1 -0
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +48 -7
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/group.js +1 -1
- package/cjs/scenegraph/graphic/group.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.d.ts +2 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +29 -10
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +9 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/column-helper.js +9 -2
- package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/init-scenegraph.js +2 -2
- package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +2 -2
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +2 -2
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-height.js +3 -1
- package/cjs/scenegraph/layout/update-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js +5 -3
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.js +54 -39
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/stick-text/index.js +5 -6
- package/cjs/scenegraph/stick-text/index.js.map +1 -1
- package/cjs/scenegraph/style/frame-border.d.ts +1 -1
- package/cjs/scenegraph/style/frame-border.js +27 -12
- package/cjs/scenegraph/style/frame-border.js.map +1 -1
- package/cjs/scenegraph/utils/get-cell-merge.js +1 -1
- package/cjs/scenegraph/utils/get-cell-merge.js.map +1 -1
- package/cjs/scenegraph/utils/get-hierarchy-offset.js +6 -8
- package/cjs/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
- package/cjs/scenegraph/utils/text-icon-layout.js +6 -4
- package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/cjs/themes/theme.d.ts +2 -0
- package/cjs/themes/theme.js +13 -4
- package/cjs/themes/theme.js.map +1 -1
- package/cjs/tools/helper.d.ts +1 -1
- package/cjs/tools/helper.js +3 -3
- package/cjs/tools/helper.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +9 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/column/style.d.ts +2 -2
- package/cjs/ts-types/column/style.js.map +1 -1
- package/cjs/ts-types/component/index.d.ts +1 -0
- package/cjs/ts-types/component/index.js +21 -0
- package/cjs/ts-types/component/index.js.map +1 -0
- package/cjs/ts-types/index.d.ts +1 -0
- package/cjs/ts-types/index.js +1 -1
- package/cjs/ts-types/index.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/api.d.ts +1 -0
- package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
- package/cjs/ts-types/new-data-set.d.ts +1 -0
- package/cjs/ts-types/new-data-set.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +10 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/ts-types/theme.d.ts +2 -1
- package/cjs/ts-types/theme.js.map +1 -1
- package/cjs/vrender.d.ts +1 -1
- package/cjs/vrender.js +2 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +8405 -5360
- package/dist/vtable.min.js +2 -2
- package/es/ListTable-all.js +5 -3
- package/es/ListTable-all.js.map +1 -1
- package/es/ListTable.d.ts +3 -0
- package/es/ListTable.js +44 -286
- package/es/ListTable.js.map +1 -1
- package/es/body-helper/style/Style.d.ts +2 -2
- package/es/body-helper/style/Style.js.map +1 -1
- package/es/components/title/title.js +3 -1
- package/es/components/title/title.js.map +1 -1
- package/es/core/BaseTable.d.ts +5 -3
- package/es/core/BaseTable.js +16 -87
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/group-helper.d.ts +6 -0
- package/es/core/group-helper.js +14 -0
- package/es/core/group-helper.js.map +1 -0
- package/es/core/record-helper.d.ts +8 -0
- package/es/core/record-helper.js +332 -0
- package/es/core/record-helper.js.map +1 -0
- package/es/core/style-helper.d.ts +3 -0
- package/es/core/style-helper.js +86 -0
- package/es/core/style-helper.js.map +1 -0
- package/es/core/tableHelper.d.ts +0 -2
- package/es/core/tableHelper.js +12 -17
- package/es/core/tableHelper.js.map +1 -1
- package/es/data/CachedDataSource.d.ts +10 -1
- package/es/data/CachedDataSource.js +103 -0
- package/es/data/CachedDataSource.js.map +1 -1
- package/es/dataset/dataset.js +1 -2
- package/es/edit/edit-manager.js +2 -1
- package/es/event/event.js +3 -1
- package/es/event/event.js.map +1 -1
- package/es/header-helper/style/Style.d.ts +2 -2
- package/es/header-helper/style/Style.js.map +1 -1
- package/es/index.d.ts +3 -1
- package/es/index.js +5 -1
- package/es/index.js.map +1 -1
- package/es/layout/cell-range/simple-cell-range.d.ts +4 -0
- package/es/layout/cell-range/simple-cell-range.js +99 -0
- package/es/layout/cell-range/simple-cell-range.js.map +1 -0
- package/es/layout/layout-helper.js +2 -2
- package/es/layout/layout-helper.js.map +1 -1
- package/es/layout/pivot-header-layout.js +4 -2
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/row-height-map.js +2 -1
- package/es/layout/simple-header-layout.d.ts +1 -2
- package/es/layout/simple-header-layout.js +7 -89
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/plugins/icons.js +1 -1
- package/es/plugins/list-tree-stick-cell.d.ts +16 -0
- package/es/plugins/list-tree-stick-cell.js +176 -0
- package/es/plugins/list-tree-stick-cell.js.map +1 -0
- package/es/plugins/themes.js +1 -1
- package/es/scenegraph/component/custom.js +1 -1
- package/es/scenegraph/component/custom.js.map +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +8 -3
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/rect-contribution-render.d.ts +1 -0
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js +49 -5
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/group.js +1 -1
- package/es/scenegraph/graphic/group.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.d.ts +2 -1
- package/es/scenegraph/group-creater/cell-helper.js +23 -8
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +9 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/es/scenegraph/group-creater/column-helper.js +8 -2
- package/es/scenegraph/group-creater/column-helper.js.map +1 -1
- package/es/scenegraph/group-creater/init-scenegraph.js +2 -2
- package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +1 -3
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +2 -2
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/update-height.js +3 -1
- package/es/scenegraph/layout/update-height.js.map +1 -1
- package/es/scenegraph/layout/update-width.js +5 -3
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/scenegraph.js +54 -39
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/stick-text/index.js +5 -6
- package/es/scenegraph/stick-text/index.js.map +1 -1
- package/es/scenegraph/style/frame-border.d.ts +1 -1
- package/es/scenegraph/style/frame-border.js +27 -10
- package/es/scenegraph/style/frame-border.js.map +1 -1
- package/es/scenegraph/utils/get-cell-merge.js +1 -1
- package/es/scenegraph/utils/get-cell-merge.js.map +1 -1
- package/es/scenegraph/utils/get-hierarchy-offset.js +7 -9
- package/es/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
- package/es/scenegraph/utils/text-icon-layout.js +6 -4
- package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/es/themes/theme.d.ts +2 -0
- package/es/themes/theme.js +13 -4
- package/es/themes/theme.js.map +1 -1
- package/es/tools/helper.d.ts +1 -1
- package/es/tools/helper.js +1 -1
- package/es/tools/helper.js.map +1 -1
- package/es/ts-types/base-table.d.ts +9 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/column/style.d.ts +2 -2
- package/es/ts-types/column/style.js.map +1 -1
- package/es/ts-types/component/index.d.ts +1 -0
- package/es/ts-types/component/index.js +2 -0
- package/es/ts-types/component/index.js.map +1 -0
- package/es/ts-types/index.d.ts +1 -0
- package/es/ts-types/index.js +2 -0
- package/es/ts-types/index.js.map +1 -1
- package/es/ts-types/list-table/layout-map/api.d.ts +1 -0
- package/es/ts-types/list-table/layout-map/api.js.map +1 -1
- package/es/ts-types/new-data-set.d.ts +1 -0
- package/es/ts-types/new-data-set.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +10 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/ts-types/theme.d.ts +2 -1
- package/es/ts-types/theme.js.map +1 -1
- package/es/vrender.d.ts +1 -1
- package/es/vrender.js +3 -2
- package/es/vrender.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.registerListTreeStickCellPlugin = exports.ListTreeStickCellPlugin = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), factory_1 = require("../core/factory"), group_1 = require("../scenegraph/graphic/group"), vrender_1 = require("../vrender"), cell_helper_1 = require("../scenegraph/group-creater/cell-helper"), util_1 = require("../event/util");
|
|
8
|
+
|
|
9
|
+
class ListTreeStickCellPlugin {
|
|
10
|
+
constructor(table) {
|
|
11
|
+
this.titleRows = [], this.showedTitleRows = [], this.rowNow = -1, this.skipStartRow = -1,
|
|
12
|
+
this.skipEndRow = -1, this.table = table, this.table.on("scroll", (e => {
|
|
13
|
+
"vertical" === e.scrollDirection && this.updateGroupTitle();
|
|
14
|
+
})), this.table.on("resize_column", (e => {
|
|
15
|
+
this.updateGroupTitle();
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
updateGroupTitle() {
|
|
19
|
+
0 === this.table.scrollTop ? (this.titleRows = [], this.showedTitleRows = []) : -1 !== this.skipStartRow && -1 !== this.skipEndRow && this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1 ? (this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow || this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow) && (this.skipStartRow = -1,
|
|
20
|
+
this.skipEndRow = -1, this.updateGroupTitleInfo()) : (this.skipStartRow = -1, this.skipEndRow = -1,
|
|
21
|
+
this.updateGroupTitleInfo()), this.updateScenegraph();
|
|
22
|
+
}
|
|
23
|
+
updateGroupTitleInfo() {
|
|
24
|
+
this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;
|
|
25
|
+
const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow), nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);
|
|
26
|
+
this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);
|
|
27
|
+
}
|
|
28
|
+
getTitleRowsByRecordIndex(recordIndex, nextRecordIndex) {
|
|
29
|
+
const titleRecords = [];
|
|
30
|
+
(0, vutils_1.isArray)(recordIndex) || (recordIndex = [ recordIndex ]), (0, vutils_1.isArray)(nextRecordIndex) || (nextRecordIndex = [ nextRecordIndex ]);
|
|
31
|
+
for (let i = 0; i < recordIndex.length; i++) {
|
|
32
|
+
const index = recordIndex.slice(0, i + 1), record = this.table.dataSource.getRaw(index);
|
|
33
|
+
titleRecords.push(record);
|
|
34
|
+
}
|
|
35
|
+
const titleRows = [], isTitle = nextRecordIndex.length === recordIndex.length + 1;
|
|
36
|
+
let titleIndex = recordIndex.slice(0, isTitle ? recordIndex.length : recordIndex.length - 1);
|
|
37
|
+
const currentIndexedData = this.table.dataSource.currentIndexedData;
|
|
38
|
+
for (let i = this.rowNow - this.table.columnHeaderLevelCount; i >= 0; i--) {
|
|
39
|
+
const currentIndex = currentIndexedData[i];
|
|
40
|
+
if ((0, vutils_1.isArray)(currentIndex) && titleIndex.length === currentIndex.length) {
|
|
41
|
+
let isMatch = !0;
|
|
42
|
+
for (let j = 0; j < currentIndex.length; j++) if (currentIndex[j] !== titleIndex[j]) {
|
|
43
|
+
isMatch = !1;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
isMatch && (titleRows.push(i + this.table.columnHeaderLevelCount), titleIndex = titleIndex.slice(0, titleIndex.length - 1));
|
|
47
|
+
} else if (currentIndex === recordIndex[0]) {
|
|
48
|
+
titleRows.push(i + this.table.columnHeaderLevelCount);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.titleRows = titleRows.reverse();
|
|
53
|
+
}
|
|
54
|
+
updateScenegraph() {
|
|
55
|
+
const {table: table} = this, {shadowGroup: shadowGroup, shadowGroupFrozen: shadowGroupFrozen} = prepareShadowRoot(table);
|
|
56
|
+
this.showedTitleRows.length = 0;
|
|
57
|
+
let skip = 0;
|
|
58
|
+
for (let col = 0; col < table.colCount; col++) {
|
|
59
|
+
let colGroup;
|
|
60
|
+
col < table.frozenColCount ? (colGroup = new group_1.Group({
|
|
61
|
+
x: table.getColsWidth(0, col - 1),
|
|
62
|
+
y: table.getFrozenRowsHeight()
|
|
63
|
+
}), shadowGroupFrozen.add(colGroup)) : (colGroup = new group_1.Group({
|
|
64
|
+
x: table.getColsWidth(table.frozenColCount, col - 1),
|
|
65
|
+
y: table.getFrozenRowsHeight()
|
|
66
|
+
}), shadowGroup.add(colGroup)), colGroup.col = col;
|
|
67
|
+
for (let i = 0; i < this.titleRows.length; i++) {
|
|
68
|
+
const row = this.titleRows[i];
|
|
69
|
+
if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {
|
|
70
|
+
0 === col && skip++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
0 === col && this.showedTitleRows.push(row);
|
|
74
|
+
const cell = table.scenegraph.getCell(col, row);
|
|
75
|
+
if ("cell" === cell.role) {
|
|
76
|
+
const newCell = cloneGraphic(cell);
|
|
77
|
+
newCell.setAttributes({
|
|
78
|
+
y: 40 * i
|
|
79
|
+
}), colGroup.add(newCell);
|
|
80
|
+
} else {
|
|
81
|
+
const newCell = (0, cell_helper_1.updateCell)(col, row, table, !0, !0);
|
|
82
|
+
newCell.setAttributes({
|
|
83
|
+
y: 40 * i
|
|
84
|
+
}), colGroup.add(newCell);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
skip > 0 && -1 === this.skipStartRow && -1 === this.skipEndRow && (this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1,
|
|
89
|
+
this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function isSkipRow(row, topRow, screenTopRow, titleRows) {
|
|
94
|
+
if (row === topRow && row !== screenTopRow + titleRows.length - 1) return !0;
|
|
95
|
+
return row === screenTopRow + titleRows.indexOf(row) + 1 && row < topRow;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function cloneGraphic(graphic) {
|
|
99
|
+
const newGraphic = graphic.clone();
|
|
100
|
+
if (newGraphic.role = graphic.role, newGraphic.col = graphic.col, newGraphic.row = graphic.row,
|
|
101
|
+
newGraphic.mergeStartCol = graphic.mergeStartCol, newGraphic.mergeStartRow = graphic.mergeStartRow,
|
|
102
|
+
newGraphic.mergeEndCol = graphic.mergeEndCol, newGraphic.mergeEndRow = graphic.mergeEndRow,
|
|
103
|
+
newGraphic.contentWidth = graphic.contentWidth, newGraphic.contentHeight = graphic.contentHeight,
|
|
104
|
+
"cell" === newGraphic.role) {
|
|
105
|
+
const hackRect = (0, vrender_1.createRect)({
|
|
106
|
+
x: 0,
|
|
107
|
+
y: 0,
|
|
108
|
+
width: newGraphic.attribute.width,
|
|
109
|
+
height: newGraphic.attribute.height
|
|
110
|
+
});
|
|
111
|
+
newGraphic.add(hackRect);
|
|
112
|
+
}
|
|
113
|
+
if ("group" === graphic.type) {
|
|
114
|
+
const newGroup = newGraphic;
|
|
115
|
+
graphic.forEachChildren((child => {
|
|
116
|
+
const newChild = cloneGraphic(child);
|
|
117
|
+
newGroup.add(newChild);
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
return newGraphic;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function prepareShadowRoot(table) {
|
|
124
|
+
const colHeaderGroup = table.scenegraph.colHeaderGroup, cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;
|
|
125
|
+
if (!colHeaderGroup.border) {
|
|
126
|
+
const hackBorder = (0, vrender_1.createRect)({
|
|
127
|
+
x: 0,
|
|
128
|
+
y: 0,
|
|
129
|
+
width: 0,
|
|
130
|
+
height: 0,
|
|
131
|
+
cursor: "pointer"
|
|
132
|
+
});
|
|
133
|
+
colHeaderGroup.add(hackBorder), colHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
|
|
134
|
+
hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
|
|
135
|
+
const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = (0,
|
|
136
|
+
util_1.getTargetCell)(shadowTarget), {col: col, row: row} = cellGroup;
|
|
137
|
+
scrollToRow(row - titleRows.indexOf(row), table);
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
if (!cornerHeaderGroup.border) {
|
|
141
|
+
const hackBorder = (0, vrender_1.createRect)({
|
|
142
|
+
x: 0,
|
|
143
|
+
y: 0,
|
|
144
|
+
width: 0,
|
|
145
|
+
height: 0,
|
|
146
|
+
cursor: "pointer"
|
|
147
|
+
});
|
|
148
|
+
cornerHeaderGroup.add(hackBorder), cornerHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
|
|
149
|
+
hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
|
|
150
|
+
const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = (0,
|
|
151
|
+
util_1.getTargetCell)(shadowTarget), {col: col, row: row} = cellGroup;
|
|
152
|
+
scrollToRow(row - titleRows.indexOf(row), table);
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
const shadowGroup = colHeaderGroup.border.shadowRoot, shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;
|
|
156
|
+
return shadowGroup.removeAllChild(), shadowGroupFrozen.removeAllChild(), {
|
|
157
|
+
shadowGroup: shadowGroup,
|
|
158
|
+
shadowGroupFrozen: shadowGroupFrozen
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function scrollToRow(row, table) {
|
|
163
|
+
const drawRange = table.getDrawRange();
|
|
164
|
+
if ((0, vutils_1.isValid)(row) && row >= table.frozenRowCount) {
|
|
165
|
+
const frozenHeight = table.getFrozenRowsHeight(), top = table.getRowsHeight(0, row - 1);
|
|
166
|
+
table.scrollTop = Math.min(top - frozenHeight, table.getAllRowsHeight() - drawRange.height) - 1;
|
|
167
|
+
}
|
|
168
|
+
table.scenegraph.updateNextFrame();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
exports.ListTreeStickCellPlugin = ListTreeStickCellPlugin;
|
|
172
|
+
|
|
173
|
+
const registerListTreeStickCellPlugin = () => {
|
|
174
|
+
factory_1.Factory.registerComponent("listTreeStickCellPlugin", ListTreeStickCellPlugin);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
exports.registerListTreeStickCellPlugin = registerListTreeStickCellPlugin;
|
|
178
|
+
//# sourceMappingURL=list-tree-stick-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugins/list-tree-stick-cell.ts"],"names":[],"mappings":"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","file":"list-tree-stick-cell.js","sourcesContent":["import { isArray, isValid } from '@visactor/vutils';\nimport type { ListTable } from '../ListTable';\nimport { Factory } from '../core/factory';\nimport { Group } from '../scenegraph/graphic/group';\nimport { createRect, type Graphic } from '../vrender';\nimport { updateCell } from '../scenegraph/group-creater/cell-helper';\nimport { getTargetCell } from '../event/util';\n\nexport class ListTreeStickCellPlugin {\n table: ListTable;\n titleRows: number[] = [];\n showedTitleRows: number[] = [];\n rowNow: number = -1;\n skipStartRow: number = -1;\n skipEndRow: number = -1;\n\n constructor(table: ListTable) {\n this.table = table;\n\n this.table.on('scroll', e => {\n if (e.scrollDirection !== 'vertical') {\n return;\n }\n this.updateGroupTitle();\n });\n\n this.table.on('resize_column', e => {\n this.updateGroupTitle();\n });\n }\n\n updateGroupTitle() {\n // this.updateGroupTitleInfo();\n if (this.table.scrollTop === 0) {\n // do nothing\n this.titleRows = [];\n this.showedTitleRows = [];\n } else if (\n this.skipStartRow !== -1 &&\n this.skipEndRow !== -1 &&\n this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1\n ) {\n if (\n this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow ||\n this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow\n ) {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n } else {\n // const row = this.table.scenegraph.proxy.screenTopRow + titleRows.length;\n // nowRow = row;\n // renderLast = true;\n // do nothing\n }\n } else {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n }\n\n this.updateScenegraph();\n }\n\n updateGroupTitleInfo() {\n this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;\n const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow); // [0, 0, 6]/0\n const nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);\n this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);\n }\n\n getTitleRowsByRecordIndex(recordIndex: number | number[], nextRecordIndex: number | number[]) {\n const titleRecords = [];\n if (!isArray(recordIndex)) {\n recordIndex = [recordIndex];\n }\n if (!isArray(nextRecordIndex)) {\n nextRecordIndex = [nextRecordIndex];\n }\n\n for (let i = 0; i < recordIndex.length; i++) {\n const index = recordIndex.slice(0, i + 1);\n const record = this.table.dataSource.getRaw(index as unknown as number);\n titleRecords.push(record);\n }\n\n const titleRows = [];\n // const isTitle = !(recordIndex.length === (this.table.options.groupBy as any).length + 1);\n const isTitle = nextRecordIndex.length === recordIndex.length + 1;\n let titleIndex = recordIndex.slice(0, !isTitle ? recordIndex.length - 1 : recordIndex.length);\n const currentIndexedData = this.table.dataSource.currentIndexedData;\n const startIndex = this.rowNow - this.table.columnHeaderLevelCount;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentIndex = currentIndexedData[i];\n if (isArray(currentIndex) && titleIndex.length === currentIndex.length) {\n let isMatch = true;\n for (let j = 0; j < currentIndex.length; j++) {\n if (currentIndex[j] !== titleIndex[j]) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n titleIndex = titleIndex.slice(0, titleIndex.length - 1);\n }\n } else if (currentIndex === recordIndex[0]) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n break;\n }\n }\n\n this.titleRows = titleRows.reverse();\n }\n\n updateScenegraph() {\n const { table } = this;\n const { shadowGroup, shadowGroupFrozen } = prepareShadowRoot(table);\n\n this.showedTitleRows.length = 0;\n let skip = 0;\n for (let col = 0; col < table.colCount; col++) {\n let colGroup;\n if (col < table.frozenColCount) {\n colGroup = new Group({\n x: table.getColsWidth(0, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroupFrozen.add(colGroup);\n } else {\n colGroup = new Group({\n x: table.getColsWidth(table.frozenColCount, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroup.add(colGroup);\n }\n colGroup.col = col;\n for (let i = 0; i < this.titleRows.length; i++) {\n const row = this.titleRows[i];\n if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {\n // skipOne = true;\n col === 0 && skip++;\n continue;\n }\n if (col === 0) {\n this.showedTitleRows.push(row);\n }\n const cell = table.scenegraph.getCell(col, row);\n if (cell.role === 'cell') {\n const newCell = cloneGraphic(cell);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n } else {\n // create a fake cellGroup for title\n const newCell = updateCell(col, row, table, true, true);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n }\n }\n }\n\n if (skip > 0 && this.skipStartRow === -1 && this.skipEndRow === -1) {\n this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1;\n this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1;\n }\n }\n}\n\nfunction isSkipRow(row: number, topRow: number, screenTopRow: number, titleRows: number[]) {\n if (row === topRow && row !== screenTopRow + titleRows.length - 1) {\n return true;\n }\n\n const rowIndex = titleRows.indexOf(row);\n const rowLimit = screenTopRow + rowIndex + 1;\n if (row === rowLimit && row < topRow) {\n return true;\n }\n\n return false;\n}\n\nfunction cloneGraphic(graphic: Graphic) {\n const newGraphic = graphic.clone();\n (newGraphic as any).role = (graphic as any).role;\n (newGraphic as any).col = (graphic as any).col;\n (newGraphic as any).row = (graphic as any).row;\n (newGraphic as any).mergeStartCol = (graphic as any).mergeStartCol;\n (newGraphic as any).mergeStartRow = (graphic as any).mergeStartRow;\n (newGraphic as any).mergeEndCol = (graphic as any).mergeEndCol;\n (newGraphic as any).mergeEndRow = (graphic as any).mergeEndRow;\n (newGraphic as any).contentWidth = (graphic as any).contentWidth;\n (newGraphic as any).contentHeight = (graphic as any).contentHeight;\n\n if ((newGraphic as any).role === 'cell') {\n // hack for vrender not support shadow group pick\n const hackRect = createRect({\n x: 0,\n y: 0,\n width: newGraphic.attribute.width,\n height: newGraphic.attribute.height\n });\n newGraphic.add(hackRect);\n }\n\n if (graphic.type === 'group') {\n const newGroup = newGraphic as Group;\n graphic.forEachChildren(child => {\n const newChild = cloneGraphic(child as any);\n newGroup.add(newChild);\n });\n }\n return newGraphic;\n}\n\nfunction prepareShadowRoot(table: ListTable) {\n const colHeaderGroup = table.scenegraph.colHeaderGroup;\n const cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;\n if (!colHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n cursor: 'pointer'\n });\n colHeaderGroup.add(hackBorder);\n colHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n // table.scrollToCell({ col, row: row - rowIndex });\n scrollToRow(row - rowIndex, table);\n });\n }\n\n if (!cornerHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n cursor: 'pointer'\n });\n cornerHeaderGroup.add(hackBorder);\n cornerHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n // table.scrollToCell({ col, row: row - rowIndex });\n scrollToRow(row - rowIndex, table);\n });\n }\n\n const shadowGroup = colHeaderGroup.border.shadowRoot;\n const shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;\n shadowGroup.removeAllChild();\n shadowGroupFrozen.removeAllChild();\n\n return { shadowGroup, shadowGroupFrozen };\n}\n\nfunction scrollToRow(row: number, table: ListTable) {\n const drawRange = table.getDrawRange();\n\n if (isValid(row) && row >= table.frozenRowCount) {\n const frozenHeight = table.getFrozenRowsHeight();\n const top = table.getRowsHeight(0, row - 1);\n table.scrollTop = Math.min(top - frozenHeight, table.getAllRowsHeight() - drawRange.height) - 1;\n }\n table.scenegraph.updateNextFrame();\n}\n\nexport const registerListTreeStickCellPlugin = () => {\n Factory.registerComponent('listTreeStickCellPlugin', ListTreeStickCellPlugin);\n};\n\nexport type IListTreeStickCellPlugin = typeof ListTreeStickCellPlugin;\n"]}
|
package/cjs/plugins/themes.js
CHANGED
|
@@ -273,7 +273,7 @@ function onBeforeAttributeUpdate(val, attribute) {
|
|
|
273
273
|
const graphic = this;
|
|
274
274
|
if (graphic.skipMergeUpdate) return;
|
|
275
275
|
const cellGroup = (0, util_1.getTargetCell)(graphic);
|
|
276
|
-
if (!cellGroup || cellGroup.stage) return;
|
|
276
|
+
if (!cellGroup || !cellGroup.stage) return;
|
|
277
277
|
const table = cellGroup.stage.table;
|
|
278
278
|
graphic.skipAttributeUpdate = !0;
|
|
279
279
|
const {mergeStartCol: mergeStartCol, mergeEndCol: mergeEndCol, mergeStartRow: mergeStartRow, mergeEndRow: mergeEndRow} = cellGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/component/custom.ts"],"names":[],"mappings":"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","file":"custom.js","sourcesContent":["import type { Cursor } from './../../vrender';\nimport {\n createArc,\n createCircle,\n createLine,\n createRect,\n REACT_TO_CANOPUS_EVENTS,\n Text,\n Group as VGroup\n} from './../../vrender';\nimport { isArray, isFunction, isObject, isString, isValid } from '@visactor/vutils';\nimport type {\n CellRange,\n ICustomLayout,\n ICustomRender,\n ICustomRenderElement,\n ICustomRenderElements,\n RectElement\n} from '../../ts-types';\nimport { Icon } from '../graphic/icon';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { percentCalcObj } from '../../render/layout';\nimport { emptyCustomLayout } from '../../components/react/react-custom-layout';\nimport { getTargetCell } from '../../event/util';\nimport type { Group } from '../graphic/group';\n\nexport const CUSTOM_MERGE_PRE_NAME = '_custom_';\nexport const CUSTOM_CONTAINER_NAME = 'custom-container';\nexport const CUSTOM_MERGE_CONTAINER_NAME = CUSTOM_MERGE_PRE_NAME + '_0';\n\nexport function dealWithCustom(\n customLayout: ICustomLayout,\n customRender: ICustomRender,\n col: number,\n row: number,\n width: number,\n height: number,\n autoWidth: boolean,\n autoHeight: boolean,\n padding: [number, number, number, number],\n range: CellRange | undefined,\n table: BaseTableAPI\n) {\n let renderDefault = true;\n let enableCellPadding = false;\n let expectedWidth: number;\n let expectedHeight: number;\n let customElements;\n let elementsGroup: VGroup;\n\n if (customLayout === 'react-custom-layout') {\n // customLayout = table._reactCreateGraphic;\n customLayout = table.reactCustomLayout?.getCustomLayoutFunc(col, row) || emptyCustomLayout;\n }\n if (typeof customLayout === 'function') {\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: {\n left: 0,\n top: 0,\n right: width,\n bottom: height,\n width,\n height\n },\n table\n };\n const customRenderObj = customLayout(arg);\n if (customRenderObj.rootContainer) {\n customRenderObj.rootContainer = decodeReactDom(customRenderObj.rootContainer);\n }\n // expectedWidth = customRenderObj.expectedWidth;\n // expectedHeight = customRenderObj.expectedHeight;\n if (customRenderObj.rootContainer instanceof VGroup) {\n elementsGroup = customRenderObj.rootContainer;\n elementsGroup.name = CUSTOM_CONTAINER_NAME;\n (elementsGroup as any).col = col;\n (elementsGroup as any).row = row;\n // } else if (customRenderObj.rootContainer) {\n // customElements = customRenderObj.rootContainer.getElements(undefined, false, false);\n }\n renderDefault = customRenderObj.renderDefault;\n enableCellPadding = customRenderObj.enableCellPadding;\n } else if (typeof customRender === 'function') {\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: {\n left: 0,\n top: 0,\n right: width,\n bottom: height,\n width,\n height\n },\n table\n };\n const customRenderObj = customRender(arg);\n if (customRenderObj) {\n customElements = customRenderObj.elements;\n renderDefault = customRenderObj.renderDefault;\n expectedWidth = customRenderObj.expectedWidth;\n expectedHeight = customRenderObj.expectedHeight;\n }\n } else if (customRender) {\n expectedWidth = customRender.expectedWidth;\n expectedHeight = customRender.expectedHeight;\n customElements = customRender.elements;\n renderDefault = customRender.renderDefault;\n }\n\n if (customElements) {\n const value = table.getCellValue(col, row);\n elementsGroup = adjustElementToGroup(\n customElements,\n autoWidth ? expectedWidth : width,\n autoHeight ? expectedHeight : height,\n value\n );\n }\n\n if (enableCellPadding) {\n elementsGroup.setAttributes({\n x: padding[3],\n y: padding[0],\n width: width - padding[1] - padding[3],\n height: height - padding[0] - padding[2]\n });\n }\n\n // for percent calc\n dealPercentCalc(elementsGroup, width, height);\n\n // deal with merge cell attribute update\n if (range && (range.start.col !== range.end.col || range.start.row !== range.end.row)) {\n bindAttributeUpdate(elementsGroup, col, row, 0);\n }\n\n return {\n elementsGroup,\n renderDefault\n };\n}\n\nfunction adjustElementToGroup(\n elements: ICustomRenderElements,\n width: number,\n height: number,\n value: any\n): VGroup | undefined {\n const customGroup = new VGroup({\n x: 0,\n y: 0,\n width,\n height,\n fill: false,\n stroke: false,\n pickable: false\n });\n customGroup.name = CUSTOM_CONTAINER_NAME;\n\n const elementsAdjusted = adjustElementsPos(elements, width, height, value);\n elementsAdjusted.forEach(element => {\n if ((element as any).clickable) {\n element.pickable = (element as any).clickable;\n }\n switch (element.type) {\n case 'arc':\n const arc = createArc({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n outerRadius: element.radius as number,\n startAngle: element.startAngle as number,\n endAngle: element.endAngle as number,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n arc.name = element.name;\n customGroup.appendChild(arc);\n break;\n case 'text':\n if (element.background) {\n const expandX = element.background?.expandX ?? 0;\n const expandY = element.background?.expandY ?? 0;\n const textBackRect = createRect({\n x: (element.x as number) - expandX,\n y: (element.y as number) - expandY,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width + expandX * 2,\n height: element.height + expandY * 2,\n cornerRadius: element.background?.cornerRadius ?? 0,\n // fill: true,\n fill: element.background?.fill ?? '#888'\n });\n customGroup.appendChild(textBackRect);\n }\n const text = new Text(\n Object.assign(\n {\n pickable: !!element.pickable,\n fill: element.color ?? element.fill\n },\n element as any\n )\n );\n text.name = element.name;\n customGroup.appendChild(text);\n break;\n case 'rect':\n const rect = createRect({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n cornerRadius: element.radius as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n rect.name = element.name;\n customGroup.appendChild(rect);\n break;\n case 'circle':\n const circle = createCircle({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n radius: element.radius as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n circle.name = element.name;\n customGroup.appendChild(circle);\n break;\n case 'icon':\n const icon = new Icon({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n image: element.svg as string,\n backgroundWidth: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundHeight: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundColor: element.hover ? element.hover.bgColor ?? 'rgba(22,44,66,0.2)' : undefined,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n icon.name = element.name;\n icon.role = 'icon-custom';\n customGroup.appendChild(icon);\n break;\n case 'image':\n const image = new Icon({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n image: element.src as string,\n backgroundWidth: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundHeight: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundColor: element.hover ? element.hover.bgColor ?? 'rgba(22,44,66,0.2)' : undefined,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor,\n shape: element.shape\n });\n image.name = element.name;\n image.role = 'image-custom';\n customGroup.appendChild(image);\n break;\n\n case 'line':\n const line = createLine({\n points: element.points,\n lineWidth: element.lineWidth ?? 1,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n line.name = element.name;\n customGroup.appendChild(line);\n break;\n }\n });\n\n return customGroup;\n}\n\nfunction adjustElementsPos(\n originalElements: ICustomRenderElements,\n // rect: RectProps,\n width: number,\n height: number,\n // borderLineWidths: number[],\n value: any\n): ICustomRenderElements {\n const result: ICustomRenderElements = [];\n // const { left, top, width, height } = rect;\n const left = 0;\n const top = 0;\n const borderLineWidths = [0, 0, 0, 0];\n\n for (let i = 0; i < originalElements.length; i++) {\n const originalElement = originalElements[i];\n const element = Object.assign({}, originalElement);\n // 执行相关函数\n for (const name in element) {\n if (element.hasOwnProperty(name) && isFunction(element[name])) {\n element[name] = (element[name] as Function)(value);\n }\n }\n\n // 转换字符串值(百分比、px)\n const rect = element as RectElement;\n if (isValid(rect.x)) {\n rect.x = isString(rect.x)\n ? transformString((rect as any).x as string, width - borderLineWidths[1])\n : Number(rect.x);\n }\n if (isValid(rect.y)) {\n rect.y = isString(rect.y)\n ? transformString((rect as any).y as string, height - borderLineWidths[2])\n : Number(rect.y);\n }\n if ('width' in element) {\n element.width = isString(element.width)\n ? transformString(element.width as string, width - borderLineWidths[1])\n : Number(element.width);\n }\n if ('height' in element) {\n element.height = isString(element.height)\n ? transformString(element.height as string, height - borderLineWidths[2])\n : Number(element.height);\n }\n if ('radius' in element) {\n element.radius = isString(element.radius)\n ? transformString(element.radius as string, Math.min(width - borderLineWidths[1], height - borderLineWidths[2]))\n : Number(element.radius);\n }\n if ('hover' in element) {\n // 转换字符串值(百分比、px)\n element.hover.x = isString(element.hover.x)\n ? transformString(element.hover.x as string, width - borderLineWidths[1])\n : Number(element.hover.x);\n element.hover.y = isString(element.hover.y)\n ? transformString(element.hover.y as string, height - borderLineWidths[2])\n : Number(element.hover.y);\n element.hover.width = isString(element.hover.width)\n ? transformString(element.hover.width as string, width - borderLineWidths[1])\n : Number(element.hover.width);\n\n element.hover.height = isString(element.hover.height)\n ? transformString(element.hover.height as string, height - borderLineWidths[2])\n : Number(element.hover.height);\n element.hover.x += left;\n element.hover.y += top;\n }\n // 矫正位置\n rect.x = rect.x + left;\n rect.y = rect.y + top;\n\n result.push(element as unknown as ICustomRenderElement);\n }\n\n return result;\n}\n\nfunction transformString(str: string, size?: number): number {\n if (str.endsWith('px')) {\n return parseInt(str, 10);\n } else if (str.endsWith('%') && size) {\n return (parseInt(str, 10) / 100) * size;\n }\n return parseInt(str, 10);\n}\n\nexport function dealPercentCalc(group: VGroup, parentWidth: number, parentHeight: number) {\n if (!group) {\n return;\n }\n group.forEachChildren((child: VGroup) => {\n if (!child) {\n return;\n }\n if (isObject(child.attribute.width) && (child.attribute.width as percentCalcObj).percent) {\n child.setAttribute(\n 'width',\n Math.max(\n 0,\n ((child.attribute.width as percentCalcObj).percent / 100) * parentWidth +\n ((child.attribute.width as percentCalcObj).delta ?? 0)\n )\n );\n }\n\n if (child.attribute.width < 0) {\n child.setAttribute('width', 0);\n }\n\n if (isObject(child.attribute.height) && (child.attribute.height as percentCalcObj).percent) {\n child.setAttribute(\n 'height',\n Math.max(\n 0,\n ((child.attribute.height as percentCalcObj).percent / 100) * parentHeight +\n ((child.attribute.height as percentCalcObj).delta ?? 0)\n )\n );\n }\n\n if (child.attribute.height < 0) {\n child.setAttribute('height', 0);\n }\n\n if (child.type === 'group') {\n dealPercentCalc(child, child.attribute.width, child.attribute.height);\n }\n });\n}\n\n// temp devode for react jsx customLayout\nexport function decodeReactDom(dom: any) {\n if (\n !dom ||\n (!isValid(dom.$$typeof) && // for react\n !isValid(dom.vtype)) // for openinula\n ) {\n // not react or openinula\n return dom;\n }\n const type = dom.type;\n const { attribute, children, stateProxy } = dom.props;\n const g = type({ attribute });\n parseToGraphic(g, dom.props);\n if (stateProxy) {\n g.stateProxy = stateProxy;\n }\n\n g.id = attribute.id;\n g.name = attribute.name;\n if (isArray(children)) {\n children.forEach((item: any) => {\n const c = decodeReactDom(item);\n c && c.type && g.add(c);\n });\n } else if (children) {\n g.add(decodeReactDom(children));\n }\n return g;\n}\n\nfunction parseToGraphic(g: any, props: any) {\n let isGraphic: boolean = false;\n switch (g.type) {\n case 'richtext':\n break;\n // case 'rich/text':\n // out = g.attribute || {};\n // childrenList[0] && (out.text = childrenList[0]);\n // break;\n case 'rich/image':\n break;\n default:\n isGraphic = true;\n }\n\n if (isGraphic) {\n // childrenList.forEach((c: any) => {\n // c && g.add(c);\n // });\n\n Object.keys(props).forEach(k => {\n const en = REACT_TO_CANOPUS_EVENTS[k];\n if (en) {\n g.on(en, props[k]);\n }\n });\n\n // } else {\n // if (g.type === 'richtext') {\n // g.attribute.textConfig = childrenList.map(item => item.attribute).filter(item => item);\n // }\n }\n}\n\nfunction bindAttributeUpdate(group: VGroup, col: number, row: number, index: number, preId?: string) {\n if (!group) {\n return;\n }\n group.name = `${CUSTOM_MERGE_PRE_NAME}${preId ?? ''}_${index}`;\n group.onBeforeAttributeUpdate = onBeforeAttributeUpdate as any;\n // group.on('afterAttributeUpdate', (e) => {console.log('afterAttributeUpdate', e)})\n if (group.type === 'group' && group.childrenCount) {\n group.forEachChildren((child: VGroup, childIndex: number) => {\n bindAttributeUpdate(child, col, row, childIndex, (preId ?? '') + '_' + index);\n });\n }\n}\n\nfunction onBeforeAttributeUpdate(val: Record<string, any>, attribute: any) {\n // @ts-ignore\n const graphic = this as any;\n if (graphic.skipMergeUpdate) {\n return;\n }\n const cellGroup = getTargetCell(graphic) as Group;\n if (!cellGroup || cellGroup.stage) {\n return;\n }\n const table = ((cellGroup as any).stage as any).table as BaseTableAPI;\n graphic.skipAttributeUpdate = true;\n const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow } = cellGroup;\n if (\n isValid(mergeStartCol) &&\n isValid(mergeEndCol) &&\n isValid(mergeStartRow) &&\n isValid(mergeEndRow) &&\n (mergeStartCol !== mergeEndCol || mergeStartRow !== mergeEndRow)\n ) {\n for (let col = mergeStartCol; col <= mergeEndCol; col++) {\n for (let row = mergeStartRow; row <= mergeEndRow; row++) {\n if (col === cellGroup.col && row === cellGroup.row) {\n continue;\n }\n // const cell = table.scenegraph.getCell(col, row);\n const cell = table.scenegraph.highPerformanceGetCell(col, row);\n if (cell.role === 'cell') {\n const target = cell.getChildByName(graphic.name, true);\n if (!target || target.skipAttributeUpdate) {\n continue;\n }\n for (const key in val) {\n // 表格内merge 单元格布局时,会使用dx dy定位,避免重复更新值,属性同步跳过 dx dy\n // console.log(\n // '[onBeforeAttributeUpdate]',\n // target._uid,\n // cellGroup.col,\n // cellGroup.row,\n // col,\n // row,\n // key,\n // val[key]\n // );\n if (val[key] !== target.attribute[key] && key !== 'dx' && key !== 'dy') {\n target.setAttribute(key, val[key]);\n }\n }\n }\n }\n }\n graphic.skipAttributeUpdate = undefined;\n // return attribute;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/component/custom.ts"],"names":[],"mappings":";;;AACA,6CAQyB;AACzB,6CAAoF;AASpF,0CAAuC;AAGvC,oFAA+E;AAC/E,2CAAiD;AAGpC,QAAA,qBAAqB,GAAG,UAAU,CAAC;AACnC,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAC3C,QAAA,2BAA2B,GAAG,6BAAqB,GAAG,IAAI,CAAC;AAExE,SAAgB,cAAc,CAC5B,YAA2B,EAC3B,YAA2B,EAC3B,GAAW,EACX,GAAW,EACX,KAAa,EACb,MAAc,EACd,SAAkB,EAClB,UAAmB,EACnB,OAAyC,EACzC,KAA4B,EAC5B,KAAmB;;IAEnB,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAqB,CAAC;IAC1B,IAAI,cAAsB,CAAC;IAC3B,IAAI,cAAc,CAAC;IACnB,IAAI,aAAqB,CAAC;IAE1B,IAAI,YAAY,KAAK,qBAAqB,EAAE;QAE1C,YAAY,GAAG,CAAA,MAAA,KAAK,CAAC,iBAAiB,0CAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI,uCAAiB,CAAC;KAC5F;IACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;QACtC,MAAM,GAAG,GAAG;YACV,GAAG;YACH,GAAG;YACH,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;YAC7C,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;YACzC,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,KAAK;gBACL,MAAM;aACP;YACD,KAAK;SACN,CAAC;QACF,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,eAAe,CAAC,aAAa,EAAE;YACjC,eAAe,CAAC,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SAC/E;QAGD,IAAI,eAAe,CAAC,aAAa,YAAY,eAAM,EAAE;YACnD,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;YAC9C,aAAa,CAAC,IAAI,GAAG,6BAAqB,CAAC;YAC1C,aAAqB,CAAC,GAAG,GAAG,GAAG,CAAC;YAChC,aAAqB,CAAC,GAAG,GAAG,GAAG,CAAC;SAGlC;QACD,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;QAC9C,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;KACvD;SAAM,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;QAC7C,MAAM,GAAG,GAAG;YACV,GAAG;YACH,GAAG;YACH,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;YAC7C,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;YACzC,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,KAAK;gBACL,MAAM;aACP;YACD,KAAK;SACN,CAAC;QACF,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,eAAe,EAAE;YACnB,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC;YAC1C,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;YAC9C,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;YAC9C,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;SACjD;KACF;SAAM,IAAI,YAAY,EAAE;QACvB,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;QAC3C,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;QAC7C,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;KAC5C;IAED,IAAI,cAAc,EAAE;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,aAAa,GAAG,oBAAoB,CAClC,cAAc,EACd,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EACjC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EACpC,KAAK,CACN,CAAC;KACH;IAED,IAAI,iBAAiB,EAAE;QACrB,aAAa,CAAC,aAAa,CAAC;YAC1B,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACb,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACb,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YACtC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;SACzC,CAAC,CAAC;KACJ;IAGD,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAG9C,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrF,mBAAmB,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KACjD;IAED,OAAO;QACL,aAAa;QACb,aAAa;KACd,CAAC;AACJ,CAAC;AArHD,wCAqHC;AAED,SAAS,oBAAoB,CAC3B,QAA+B,EAC/B,KAAa,EACb,MAAc,EACd,KAAU;IAEV,MAAM,WAAW,GAAG,IAAI,eAAM,CAAC;QAC7B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK;QACL,MAAM;QACN,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,GAAG,6BAAqB,CAAC;IAEzC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3E,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;QACjC,IAAK,OAAe,CAAC,SAAS,EAAE;YAC9B,OAAO,CAAC,QAAQ,GAAI,OAAe,CAAC,SAAS,CAAC;SAC/C;QACD,QAAQ,OAAO,CAAC,IAAI,EAAE;YACpB,KAAK,KAAK;gBACR,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC;oBACpB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,IAAI,EAAE,OAAO,CAAC,IAAc;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,WAAW,EAAE,OAAO,CAAC,MAAgB;oBACrC,UAAU,EAAE,OAAO,CAAC,UAAoB;oBACxC,QAAQ,EAAE,OAAO,CAAC,QAAkB;oBACpC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;iBACjC,CAAC,CAAC;gBACH,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACxB,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,MAAM,OAAO,GAAG,MAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,OAAO,mCAAI,CAAC,CAAC;oBACjD,MAAM,OAAO,GAAG,MAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,OAAO,mCAAI,CAAC,CAAC;oBACjD,MAAM,YAAY,GAAG,IAAA,oBAAU,EAAC;wBAC9B,CAAC,EAAG,OAAO,CAAC,CAAY,GAAG,OAAO;wBAClC,CAAC,EAAG,OAAO,CAAC,CAAY,GAAG,OAAO;wBAClC,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;wBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;wBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC;wBAClC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC;wBACpC,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,YAAY,mCAAI,CAAC;wBAEnD,IAAI,EAAE,MAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,IAAI,mCAAI,MAAM;qBACzC,CAAC,CAAC;oBACH,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;iBACvC;gBACD,MAAM,IAAI,GAAG,IAAI,cAAI,CACnB,MAAM,CAAC,MAAM,CACX;oBACE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,IAAI,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,OAAO,CAAC,IAAI;iBACpC,EACD,OAAc,CACf,CACF,CAAC;gBACF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACzB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,GAAG,IAAA,oBAAU,EAAC;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,KAAK,EAAE,OAAO,CAAC,KAAe;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,YAAY,EAAE,OAAO,CAAC,MAAgB;oBACtC,IAAI,EAAE,OAAO,CAAC,IAAc;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;iBACjC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACzB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC;oBAC1B,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,IAAI,EAAE,OAAO,CAAC,IAAc;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;iBACjC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC3B,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC;oBACpB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,KAAK,EAAE,OAAO,CAAC,KAAe;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,KAAK,EAAE,OAAO,CAAC,GAAa;oBAC5B,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;oBAC/F,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;oBAChG,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,OAAO,mCAAI,oBAAoB,CAAC,CAAC,CAAC,SAAS;oBAC1F,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;iBACjC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;gBAC1B,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,KAAK,GAAG,IAAI,WAAI,CAAC;oBACrB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,CAAC,EAAE,OAAO,CAAC,CAAW;oBACtB,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,EAAE,EAAE,CAAC,MAAA,OAAO,CAAC,EAAE,mCAAI,CAAC,CAAW;oBAC/B,KAAK,EAAE,OAAO,CAAC,KAAe;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,KAAK,EAAE,OAAO,CAAC,GAAa;oBAC5B,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;oBAC/F,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;oBAChG,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,OAAO,mCAAI,oBAAoB,CAAC,CAAC,CAAC,SAAS;oBAC1F,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;gBAC5B,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;YAER,KAAK,MAAM;gBACT,MAAM,IAAI,GAAG,IAAA,oBAAU,EAAC;oBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,SAAS,EAAE,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC;oBACjC,MAAM,EAAE,OAAO,CAAC,MAAgB;oBAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAgB;iBACjC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACzB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;SACT;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CACxB,gBAAuC,EAEvC,KAAa,EACb,MAAc,EAEd,KAAU;IAEV,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,GAAG,GAAG,CAAC,CAAC;IACd,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAEnD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAA,mBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC7D,OAAO,CAAC,IAAI,CAAC,GAAI,OAAO,CAAC,IAAI,CAAc,CAAC,KAAK,CAAC,CAAC;aACpD;SACF;QAGD,MAAM,IAAI,GAAG,OAAsB,CAAC;QACpC,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACnB,IAAI,CAAC,CAAC,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,eAAe,CAAE,IAAY,CAAC,CAAW,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACnB,IAAI,CAAC,CAAC,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,eAAe,CAAE,IAAY,CAAC,CAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC1E,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,IAAI,OAAO,IAAI,OAAO,EAAE;YACtB,OAAO,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC;gBACrC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAe,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACvE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,OAAO,CAAC,MAAM,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC;gBACvC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAgB,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC5B;QACD,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,OAAO,CAAC,MAAM,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC;gBACvC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC5B;QACD,IAAI,OAAO,IAAI,OAAO,EAAE;YAEtB,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAW,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC1E,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjD,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAe,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC7E,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEhC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnD,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,MAAgB,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;SACxB;QAED,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QAEtB,MAAM,CAAC,IAAI,CAAC,OAA0C,CAAC,CAAC;KACzD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,IAAa;IACjD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1B;SAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;KACzC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa,EAAE,WAAmB,EAAE,YAAoB;IACtF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;KACR;IACD,KAAK,CAAC,eAAe,CAAC,CAAC,KAAa,EAAE,EAAE;;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAK,CAAC,SAAS,CAAC,KAAwB,CAAC,OAAO,EAAE;YACxF,KAAK,CAAC,YAAY,CAChB,OAAO,EACP,IAAI,CAAC,GAAG,CACN,CAAC,EACD,CAAE,KAAK,CAAC,SAAS,CAAC,KAAwB,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,WAAW;gBACrE,CAAC,MAAC,KAAK,CAAC,SAAS,CAAC,KAAwB,CAAC,KAAK,mCAAI,CAAC,CAAC,CACzD,CACF,CAAC;SACH;QAED,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;YAC7B,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAK,KAAK,CAAC,SAAS,CAAC,MAAyB,CAAC,OAAO,EAAE;YAC1F,KAAK,CAAC,YAAY,CAChB,QAAQ,EACR,IAAI,CAAC,GAAG,CACN,CAAC,EACD,CAAE,KAAK,CAAC,SAAS,CAAC,MAAyB,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,YAAY;gBACvE,CAAC,MAAC,KAAK,CAAC,SAAS,CAAC,MAAyB,CAAC,KAAK,mCAAI,CAAC,CAAC,CAC1D,CACF,CAAC;SACH;QAED,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACjC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACvE;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AA1CD,0CA0CC;AAGD,SAAgB,cAAc,CAAC,GAAQ;IACrC,IACE,CAAC,GAAG;QACJ,CAAC,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,QAAQ,CAAC;YACrB,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACtB;QAEA,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9B,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,UAAU,EAAE;QACd,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;KAC3B;IAED,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IACpB,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IACxB,IAAI,IAAA,gBAAO,EAAC,QAAQ,CAAC,EAAE;QACrB,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,QAAQ,EAAE;QACnB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;KACjC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AA5BD,wCA4BC;AAED,SAAS,cAAc,CAAC,CAAM,EAAE,KAAU;IACxC,IAAI,SAAS,GAAY,KAAK,CAAC;IAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE;QACd,KAAK,UAAU;YACb,MAAM;QAKR,KAAK,YAAY;YACf,MAAM;QACR;YACE,SAAS,GAAG,IAAI,CAAC;KACpB;IAED,IAAI,SAAS,EAAE;QAKb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,MAAM,EAAE,GAAG,iCAAuB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,EAAE,EAAE;gBACN,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;KAMJ;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,KAAa,EAAE,KAAc;IACjG,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;KACR;IACD,KAAK,CAAC,IAAI,GAAG,GAAG,6BAAqB,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,IAAI,KAAK,EAAE,CAAC;IAC/D,KAAK,CAAC,uBAAuB,GAAG,uBAA8B,CAAC;IAE/D,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE;QACjD,KAAK,CAAC,eAAe,CAAC,CAAC,KAAa,EAAE,UAAkB,EAAE,EAAE;YAC1D,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAwB,EAAE,SAAc;IAEvE,MAAM,OAAO,GAAG,IAAW,CAAC;IAC5B,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,OAAO;KACR;IACD,MAAM,SAAS,GAAG,IAAA,oBAAa,EAAC,OAAO,CAAU,CAAC;IAClD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAClC,OAAO;KACR;IACD,MAAM,KAAK,GAAK,SAAiB,CAAC,KAAa,CAAC,KAAqB,CAAC;IACtE,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAC7E,IACE,IAAA,gBAAO,EAAC,aAAa,CAAC;QACtB,IAAA,gBAAO,EAAC,WAAW,CAAC;QACpB,IAAA,gBAAO,EAAC,aAAa,CAAC;QACtB,IAAA,gBAAO,EAAC,WAAW,CAAC;QACpB,CAAC,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,WAAW,CAAC,EAChE;QACA,KAAK,IAAI,GAAG,GAAG,aAAa,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE;YACvD,KAAK,IAAI,GAAG,GAAG,aAAa,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE;gBACvD,IAAI,GAAG,KAAK,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,SAAS,CAAC,GAAG,EAAE;oBAClD,SAAS;iBACV;gBAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;oBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;wBACzC,SAAS;qBACV;oBACD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;wBAYrB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;4BACtE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;yBACpC;qBACF;iBACF;aACF;SACF;QACD,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;KAEzC;AACH,CAAC","file":"custom.js","sourcesContent":["import type { Cursor } from './../../vrender';\nimport {\n createArc,\n createCircle,\n createLine,\n createRect,\n REACT_TO_CANOPUS_EVENTS,\n Text,\n Group as VGroup\n} from './../../vrender';\nimport { isArray, isFunction, isObject, isString, isValid } from '@visactor/vutils';\nimport type {\n CellRange,\n ICustomLayout,\n ICustomRender,\n ICustomRenderElement,\n ICustomRenderElements,\n RectElement\n} from '../../ts-types';\nimport { Icon } from '../graphic/icon';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { percentCalcObj } from '../../render/layout';\nimport { emptyCustomLayout } from '../../components/react/react-custom-layout';\nimport { getTargetCell } from '../../event/util';\nimport type { Group } from '../graphic/group';\n\nexport const CUSTOM_MERGE_PRE_NAME = '_custom_';\nexport const CUSTOM_CONTAINER_NAME = 'custom-container';\nexport const CUSTOM_MERGE_CONTAINER_NAME = CUSTOM_MERGE_PRE_NAME + '_0';\n\nexport function dealWithCustom(\n customLayout: ICustomLayout,\n customRender: ICustomRender,\n col: number,\n row: number,\n width: number,\n height: number,\n autoWidth: boolean,\n autoHeight: boolean,\n padding: [number, number, number, number],\n range: CellRange | undefined,\n table: BaseTableAPI\n) {\n let renderDefault = true;\n let enableCellPadding = false;\n let expectedWidth: number;\n let expectedHeight: number;\n let customElements;\n let elementsGroup: VGroup;\n\n if (customLayout === 'react-custom-layout') {\n // customLayout = table._reactCreateGraphic;\n customLayout = table.reactCustomLayout?.getCustomLayoutFunc(col, row) || emptyCustomLayout;\n }\n if (typeof customLayout === 'function') {\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: {\n left: 0,\n top: 0,\n right: width,\n bottom: height,\n width,\n height\n },\n table\n };\n const customRenderObj = customLayout(arg);\n if (customRenderObj.rootContainer) {\n customRenderObj.rootContainer = decodeReactDom(customRenderObj.rootContainer);\n }\n // expectedWidth = customRenderObj.expectedWidth;\n // expectedHeight = customRenderObj.expectedHeight;\n if (customRenderObj.rootContainer instanceof VGroup) {\n elementsGroup = customRenderObj.rootContainer;\n elementsGroup.name = CUSTOM_CONTAINER_NAME;\n (elementsGroup as any).col = col;\n (elementsGroup as any).row = row;\n // } else if (customRenderObj.rootContainer) {\n // customElements = customRenderObj.rootContainer.getElements(undefined, false, false);\n }\n renderDefault = customRenderObj.renderDefault;\n enableCellPadding = customRenderObj.enableCellPadding;\n } else if (typeof customRender === 'function') {\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: {\n left: 0,\n top: 0,\n right: width,\n bottom: height,\n width,\n height\n },\n table\n };\n const customRenderObj = customRender(arg);\n if (customRenderObj) {\n customElements = customRenderObj.elements;\n renderDefault = customRenderObj.renderDefault;\n expectedWidth = customRenderObj.expectedWidth;\n expectedHeight = customRenderObj.expectedHeight;\n }\n } else if (customRender) {\n expectedWidth = customRender.expectedWidth;\n expectedHeight = customRender.expectedHeight;\n customElements = customRender.elements;\n renderDefault = customRender.renderDefault;\n }\n\n if (customElements) {\n const value = table.getCellValue(col, row);\n elementsGroup = adjustElementToGroup(\n customElements,\n autoWidth ? expectedWidth : width,\n autoHeight ? expectedHeight : height,\n value\n );\n }\n\n if (enableCellPadding) {\n elementsGroup.setAttributes({\n x: padding[3],\n y: padding[0],\n width: width - padding[1] - padding[3],\n height: height - padding[0] - padding[2]\n });\n }\n\n // for percent calc\n dealPercentCalc(elementsGroup, width, height);\n\n // deal with merge cell attribute update\n if (range && (range.start.col !== range.end.col || range.start.row !== range.end.row)) {\n bindAttributeUpdate(elementsGroup, col, row, 0);\n }\n\n return {\n elementsGroup,\n renderDefault\n };\n}\n\nfunction adjustElementToGroup(\n elements: ICustomRenderElements,\n width: number,\n height: number,\n value: any\n): VGroup | undefined {\n const customGroup = new VGroup({\n x: 0,\n y: 0,\n width,\n height,\n fill: false,\n stroke: false,\n pickable: false\n });\n customGroup.name = CUSTOM_CONTAINER_NAME;\n\n const elementsAdjusted = adjustElementsPos(elements, width, height, value);\n elementsAdjusted.forEach(element => {\n if ((element as any).clickable) {\n element.pickable = (element as any).clickable;\n }\n switch (element.type) {\n case 'arc':\n const arc = createArc({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n outerRadius: element.radius as number,\n startAngle: element.startAngle as number,\n endAngle: element.endAngle as number,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n arc.name = element.name;\n customGroup.appendChild(arc);\n break;\n case 'text':\n if (element.background) {\n const expandX = element.background?.expandX ?? 0;\n const expandY = element.background?.expandY ?? 0;\n const textBackRect = createRect({\n x: (element.x as number) - expandX,\n y: (element.y as number) - expandY,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width + expandX * 2,\n height: element.height + expandY * 2,\n cornerRadius: element.background?.cornerRadius ?? 0,\n // fill: true,\n fill: element.background?.fill ?? '#888'\n });\n customGroup.appendChild(textBackRect);\n }\n const text = new Text(\n Object.assign(\n {\n pickable: !!element.pickable,\n fill: element.color ?? element.fill\n },\n element as any\n )\n );\n text.name = element.name;\n customGroup.appendChild(text);\n break;\n case 'rect':\n const rect = createRect({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n cornerRadius: element.radius as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n rect.name = element.name;\n customGroup.appendChild(rect);\n break;\n case 'circle':\n const circle = createCircle({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n radius: element.radius as number,\n fill: element.fill as string,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n circle.name = element.name;\n customGroup.appendChild(circle);\n break;\n case 'icon':\n const icon = new Icon({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n image: element.svg as string,\n backgroundWidth: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundHeight: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundColor: element.hover ? element.hover.bgColor ?? 'rgba(22,44,66,0.2)' : undefined,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n icon.name = element.name;\n icon.role = 'icon-custom';\n customGroup.appendChild(icon);\n break;\n case 'image':\n const image = new Icon({\n x: element.x as number,\n y: element.y as number,\n dx: (element.dx ?? 0) as number,\n dy: (element.dy ?? 0) as number,\n width: element.width as number,\n height: element.height as number,\n image: element.src as string,\n backgroundWidth: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundHeight: element.hover ? ((element.hover.width ?? element.width) as number) : undefined,\n backgroundColor: element.hover ? element.hover.bgColor ?? 'rgba(22,44,66,0.2)' : undefined,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor,\n shape: element.shape\n });\n image.name = element.name;\n image.role = 'image-custom';\n customGroup.appendChild(image);\n break;\n\n case 'line':\n const line = createLine({\n points: element.points,\n lineWidth: element.lineWidth ?? 1,\n stroke: element.stroke as string,\n pickable: !!element.pickable,\n cursor: element.cursor as Cursor\n });\n line.name = element.name;\n customGroup.appendChild(line);\n break;\n }\n });\n\n return customGroup;\n}\n\nfunction adjustElementsPos(\n originalElements: ICustomRenderElements,\n // rect: RectProps,\n width: number,\n height: number,\n // borderLineWidths: number[],\n value: any\n): ICustomRenderElements {\n const result: ICustomRenderElements = [];\n // const { left, top, width, height } = rect;\n const left = 0;\n const top = 0;\n const borderLineWidths = [0, 0, 0, 0];\n\n for (let i = 0; i < originalElements.length; i++) {\n const originalElement = originalElements[i];\n const element = Object.assign({}, originalElement);\n // 执行相关函数\n for (const name in element) {\n if (element.hasOwnProperty(name) && isFunction(element[name])) {\n element[name] = (element[name] as Function)(value);\n }\n }\n\n // 转换字符串值(百分比、px)\n const rect = element as RectElement;\n if (isValid(rect.x)) {\n rect.x = isString(rect.x)\n ? transformString((rect as any).x as string, width - borderLineWidths[1])\n : Number(rect.x);\n }\n if (isValid(rect.y)) {\n rect.y = isString(rect.y)\n ? transformString((rect as any).y as string, height - borderLineWidths[2])\n : Number(rect.y);\n }\n if ('width' in element) {\n element.width = isString(element.width)\n ? transformString(element.width as string, width - borderLineWidths[1])\n : Number(element.width);\n }\n if ('height' in element) {\n element.height = isString(element.height)\n ? transformString(element.height as string, height - borderLineWidths[2])\n : Number(element.height);\n }\n if ('radius' in element) {\n element.radius = isString(element.radius)\n ? transformString(element.radius as string, Math.min(width - borderLineWidths[1], height - borderLineWidths[2]))\n : Number(element.radius);\n }\n if ('hover' in element) {\n // 转换字符串值(百分比、px)\n element.hover.x = isString(element.hover.x)\n ? transformString(element.hover.x as string, width - borderLineWidths[1])\n : Number(element.hover.x);\n element.hover.y = isString(element.hover.y)\n ? transformString(element.hover.y as string, height - borderLineWidths[2])\n : Number(element.hover.y);\n element.hover.width = isString(element.hover.width)\n ? transformString(element.hover.width as string, width - borderLineWidths[1])\n : Number(element.hover.width);\n\n element.hover.height = isString(element.hover.height)\n ? transformString(element.hover.height as string, height - borderLineWidths[2])\n : Number(element.hover.height);\n element.hover.x += left;\n element.hover.y += top;\n }\n // 矫正位置\n rect.x = rect.x + left;\n rect.y = rect.y + top;\n\n result.push(element as unknown as ICustomRenderElement);\n }\n\n return result;\n}\n\nfunction transformString(str: string, size?: number): number {\n if (str.endsWith('px')) {\n return parseInt(str, 10);\n } else if (str.endsWith('%') && size) {\n return (parseInt(str, 10) / 100) * size;\n }\n return parseInt(str, 10);\n}\n\nexport function dealPercentCalc(group: VGroup, parentWidth: number, parentHeight: number) {\n if (!group) {\n return;\n }\n group.forEachChildren((child: VGroup) => {\n if (!child) {\n return;\n }\n if (isObject(child.attribute.width) && (child.attribute.width as percentCalcObj).percent) {\n child.setAttribute(\n 'width',\n Math.max(\n 0,\n ((child.attribute.width as percentCalcObj).percent / 100) * parentWidth +\n ((child.attribute.width as percentCalcObj).delta ?? 0)\n )\n );\n }\n\n if (child.attribute.width < 0) {\n child.setAttribute('width', 0);\n }\n\n if (isObject(child.attribute.height) && (child.attribute.height as percentCalcObj).percent) {\n child.setAttribute(\n 'height',\n Math.max(\n 0,\n ((child.attribute.height as percentCalcObj).percent / 100) * parentHeight +\n ((child.attribute.height as percentCalcObj).delta ?? 0)\n )\n );\n }\n\n if (child.attribute.height < 0) {\n child.setAttribute('height', 0);\n }\n\n if (child.type === 'group') {\n dealPercentCalc(child, child.attribute.width, child.attribute.height);\n }\n });\n}\n\n// temp devode for react jsx customLayout\nexport function decodeReactDom(dom: any) {\n if (\n !dom ||\n (!isValid(dom.$$typeof) && // for react\n !isValid(dom.vtype)) // for openinula\n ) {\n // not react or openinula\n return dom;\n }\n const type = dom.type;\n const { attribute, children, stateProxy } = dom.props;\n const g = type({ attribute });\n parseToGraphic(g, dom.props);\n if (stateProxy) {\n g.stateProxy = stateProxy;\n }\n\n g.id = attribute.id;\n g.name = attribute.name;\n if (isArray(children)) {\n children.forEach((item: any) => {\n const c = decodeReactDom(item);\n c && c.type && g.add(c);\n });\n } else if (children) {\n g.add(decodeReactDom(children));\n }\n return g;\n}\n\nfunction parseToGraphic(g: any, props: any) {\n let isGraphic: boolean = false;\n switch (g.type) {\n case 'richtext':\n break;\n // case 'rich/text':\n // out = g.attribute || {};\n // childrenList[0] && (out.text = childrenList[0]);\n // break;\n case 'rich/image':\n break;\n default:\n isGraphic = true;\n }\n\n if (isGraphic) {\n // childrenList.forEach((c: any) => {\n // c && g.add(c);\n // });\n\n Object.keys(props).forEach(k => {\n const en = REACT_TO_CANOPUS_EVENTS[k];\n if (en) {\n g.on(en, props[k]);\n }\n });\n\n // } else {\n // if (g.type === 'richtext') {\n // g.attribute.textConfig = childrenList.map(item => item.attribute).filter(item => item);\n // }\n }\n}\n\nfunction bindAttributeUpdate(group: VGroup, col: number, row: number, index: number, preId?: string) {\n if (!group) {\n return;\n }\n group.name = `${CUSTOM_MERGE_PRE_NAME}${preId ?? ''}_${index}`;\n group.onBeforeAttributeUpdate = onBeforeAttributeUpdate as any;\n // group.on('afterAttributeUpdate', (e) => {console.log('afterAttributeUpdate', e)})\n if (group.type === 'group' && group.childrenCount) {\n group.forEachChildren((child: VGroup, childIndex: number) => {\n bindAttributeUpdate(child, col, row, childIndex, (preId ?? '') + '_' + index);\n });\n }\n}\n\nfunction onBeforeAttributeUpdate(val: Record<string, any>, attribute: any) {\n // @ts-ignore\n const graphic = this as any;\n if (graphic.skipMergeUpdate) {\n return;\n }\n const cellGroup = getTargetCell(graphic) as Group;\n if (!cellGroup || !cellGroup.stage) {\n return;\n }\n const table = ((cellGroup as any).stage as any).table as BaseTableAPI;\n graphic.skipAttributeUpdate = true;\n const { mergeStartCol, mergeEndCol, mergeStartRow, mergeEndRow } = cellGroup;\n if (\n isValid(mergeStartCol) &&\n isValid(mergeEndCol) &&\n isValid(mergeStartRow) &&\n isValid(mergeEndRow) &&\n (mergeStartCol !== mergeEndCol || mergeStartRow !== mergeEndRow)\n ) {\n for (let col = mergeStartCol; col <= mergeEndCol; col++) {\n for (let row = mergeStartRow; row <= mergeEndRow; row++) {\n if (col === cellGroup.col && row === cellGroup.row) {\n continue;\n }\n // const cell = table.scenegraph.getCell(col, row);\n const cell = table.scenegraph.highPerformanceGetCell(col, row);\n if (cell.role === 'cell') {\n const target = cell.getChildByName(graphic.name, true);\n if (!target || target.skipAttributeUpdate) {\n continue;\n }\n for (const key in val) {\n // 表格内merge 单元格布局时,会使用dx dy定位,避免重复更新值,属性同步跳过 dx dy\n // console.log(\n // '[onBeforeAttributeUpdate]',\n // target._uid,\n // cellGroup.col,\n // cellGroup.row,\n // col,\n // row,\n // key,\n // val[key]\n // );\n if (val[key] !== target.attribute[key] && key !== 'dx' && key !== 'dy') {\n target.setAttribute(key, val[key]);\n }\n }\n }\n }\n }\n graphic.skipAttributeUpdate = undefined;\n // return attribute;\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
10
|
value: !0
|
|
11
11
|
}), exports.ClipBodyGroupAfterRenderContribution = exports.ClipBodyGroupBeforeRenderContribution = exports.AdjustColorGroupAfterRenderContribution = exports.AdjustColorGroupBeforeRenderContribution = exports.AdjustPosGroupAfterRenderContribution = exports.AdjustPosGroupBeforeRenderContribution = exports.DashGroupAfterRenderContribution = exports.DashGroupBeforeRenderContribution = exports.renderStroke = exports.getWidthInfo = exports.SplitGroupAfterRenderContribution = exports.SplitGroupBeforeRenderContribution = void 0;
|
|
12
12
|
|
|
13
|
-
const vrender_1 = require("./../../../vrender"), is_cell_hover_1 = require("../../../state/hover/is-cell-hover"), get_cell_merge_1 = require("../../utils/get-cell-merge"), ts_types_1 = require("../../../ts-types"), vutils_1 = require("@visactor/vutils"), is_cell_select_highlight_1 = require("../../../state/select/is-cell-select-highlight");
|
|
13
|
+
const vrender_1 = require("./../../../vrender"), is_cell_hover_1 = require("../../../state/hover/is-cell-hover"), get_cell_merge_1 = require("../../utils/get-cell-merge"), ts_types_1 = require("../../../ts-types"), vutils_1 = require("@visactor/vutils"), is_cell_select_highlight_1 = require("../../../state/select/is-cell-select-highlight"), rect_contribution_render_1 = require("./rect-contribution-render");
|
|
14
14
|
|
|
15
15
|
let SplitGroupBeforeRenderContribution = class {
|
|
16
16
|
constructor() {
|
|
@@ -33,7 +33,7 @@ let SplitGroupAfterRenderContribution = class {
|
|
|
33
33
|
}
|
|
34
34
|
drawShape(group, context, x, y, doFill, doStroke, fVisible, sVisible, groupAttribute, drawContext, fillCb, strokeCb) {
|
|
35
35
|
var _a;
|
|
36
|
-
const {stroke: stroke = groupAttribute.stroke, strokeArrayColor: strokeArrayColor = groupAttribute.strokeArrayColor, strokeArrayWidth: strokeArrayWidth = groupAttribute.strokeArrayWidth, lineWidth: lineWidth = groupAttribute.lineWidth, strokeColor: strokeColor = groupAttribute.stroke} = group.attribute;
|
|
36
|
+
const {stroke: stroke = groupAttribute.stroke, strokeArrayColor: strokeArrayColor = groupAttribute.strokeArrayColor, strokeArrayWidth: strokeArrayWidth = groupAttribute.strokeArrayWidth, lineWidth: lineWidth = groupAttribute.lineWidth, strokeColor: strokeColor = groupAttribute.stroke, cornerRadius: cornerRadius = groupAttribute.cornerRadius} = group.attribute;
|
|
37
37
|
let widthForStroke, heightForStroke, {width: width = groupAttribute.width, height: height = groupAttribute.height} = group.attribute;
|
|
38
38
|
if (stroke && (Array.isArray(strokeArrayWidth) || 0 !== lineWidth) && (Array.isArray(strokeArrayColor) || Array.isArray(strokeArrayWidth))) {
|
|
39
39
|
if ("number" == typeof lineWidth && 1 & lineWidth || Array.isArray(strokeArrayWidth) && strokeArrayWidth.some((width => 1 & width))) {
|
|
@@ -46,7 +46,10 @@ let SplitGroupAfterRenderContribution = class {
|
|
|
46
46
|
const {width: widthFroDraw, height: heightFroDraw} = getCellSizeForDraw(group, Math.ceil(width), Math.ceil(height), bottomRight);
|
|
47
47
|
widthForStroke = widthFroDraw, heightForStroke = heightFroDraw;
|
|
48
48
|
} else widthForStroke = Math.ceil(width), heightForStroke = Math.ceil(height);
|
|
49
|
-
renderStroke(group, context, x, y, groupAttribute, stroke, strokeArrayWidth || lineWidth, strokeArrayColor || strokeColor, widthForStroke, heightForStroke)
|
|
49
|
+
0 === cornerRadius || (0, vutils_1.isArray)(cornerRadius) && cornerRadius.every((num => 0 === num)) ? renderStroke(group, context, x, y, groupAttribute, stroke, strokeArrayWidth || lineWidth, strokeArrayColor || strokeColor, widthForStroke, heightForStroke) : (context.beginPath(),
|
|
50
|
+
(0, vrender_1.createRectPath)(context, x, y, widthForStroke, heightForStroke, cornerRadius, new Array(4).fill(0).map(((_, i) => (x1, y1, x2, y2) => {
|
|
51
|
+
(0, rect_contribution_render_1.renderStrokeWithCornerRadius)(i, x1, y1, x2, y2, group, context, x, y, groupAttribute, stroke, strokeArrayWidth || lineWidth, strokeArrayColor || strokeColor, widthForStroke, heightForStroke);
|
|
52
|
+
}))), context.stroke());
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
};
|