@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.
Files changed (239) hide show
  1. package/cjs/ListTable-all.js +5 -5
  2. package/cjs/ListTable-all.js.map +1 -1
  3. package/cjs/ListTable.d.ts +3 -0
  4. package/cjs/ListTable.js +41 -284
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/body-helper/style/Style.d.ts +2 -2
  7. package/cjs/body-helper/style/Style.js.map +1 -1
  8. package/cjs/components/title/title.js +3 -1
  9. package/cjs/components/title/title.js.map +1 -1
  10. package/cjs/core/BaseTable.d.ts +5 -3
  11. package/cjs/core/BaseTable.js +13 -83
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/core/group-helper.d.ts +6 -0
  14. package/cjs/core/group-helper.js +22 -0
  15. package/cjs/core/group-helper.js.map +1 -0
  16. package/cjs/core/record-helper.d.ts +8 -0
  17. package/cjs/core/record-helper.js +337 -0
  18. package/cjs/core/record-helper.js.map +1 -0
  19. package/cjs/core/style-helper.d.ts +3 -0
  20. package/cjs/core/style-helper.js +110 -0
  21. package/cjs/core/style-helper.js.map +1 -0
  22. package/cjs/core/tableHelper.d.ts +0 -2
  23. package/cjs/core/tableHelper.js +15 -19
  24. package/cjs/core/tableHelper.js.map +1 -1
  25. package/cjs/data/CachedDataSource.d.ts +10 -1
  26. package/cjs/data/CachedDataSource.js +102 -3
  27. package/cjs/data/CachedDataSource.js.map +1 -1
  28. package/cjs/dataset/dataset.js +0 -1
  29. package/cjs/edit/edit-manager.js +2 -1
  30. package/cjs/event/event.js +3 -1
  31. package/cjs/event/event.js.map +1 -1
  32. package/cjs/header-helper/style/Style.d.ts +2 -2
  33. package/cjs/header-helper/style/Style.js.map +1 -1
  34. package/cjs/index.d.ts +3 -1
  35. package/cjs/index.js +25 -2
  36. package/cjs/index.js.map +1 -1
  37. package/cjs/layout/cell-range/simple-cell-range.d.ts +4 -0
  38. package/cjs/layout/cell-range/simple-cell-range.js +106 -0
  39. package/cjs/layout/cell-range/simple-cell-range.js.map +1 -0
  40. package/cjs/layout/layout-helper.js +2 -2
  41. package/cjs/layout/layout-helper.js.map +1 -1
  42. package/cjs/layout/pivot-header-layout.js +4 -2
  43. package/cjs/layout/pivot-header-layout.js.map +1 -1
  44. package/cjs/layout/row-height-map.js +1 -0
  45. package/cjs/layout/simple-header-layout.d.ts +1 -2
  46. package/cjs/layout/simple-header-layout.js +6 -90
  47. package/cjs/layout/simple-header-layout.js.map +1 -1
  48. package/cjs/plugins/icons.js +1 -1
  49. package/cjs/plugins/list-tree-stick-cell.d.ts +16 -0
  50. package/cjs/plugins/list-tree-stick-cell.js +178 -0
  51. package/cjs/plugins/list-tree-stick-cell.js.map +1 -0
  52. package/cjs/plugins/themes.js +1 -1
  53. package/cjs/scenegraph/component/custom.js +1 -1
  54. package/cjs/scenegraph/component/custom.js.map +1 -1
  55. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +6 -3
  56. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  57. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.d.ts +1 -0
  58. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +48 -7
  59. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  60. package/cjs/scenegraph/graphic/group.js +1 -1
  61. package/cjs/scenegraph/graphic/group.js.map +1 -1
  62. package/cjs/scenegraph/group-creater/cell-helper.d.ts +2 -1
  63. package/cjs/scenegraph/group-creater/cell-helper.js +29 -10
  64. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +9 -1
  66. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/column-helper.js +9 -2
  68. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  69. package/cjs/scenegraph/group-creater/init-scenegraph.js +2 -2
  70. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  71. package/cjs/scenegraph/layout/compute-col-width.js +2 -2
  72. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  73. package/cjs/scenegraph/layout/compute-row-height.js +2 -2
  74. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  75. package/cjs/scenegraph/layout/update-height.js +3 -1
  76. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  77. package/cjs/scenegraph/layout/update-width.js +5 -3
  78. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  79. package/cjs/scenegraph/scenegraph.js +54 -39
  80. package/cjs/scenegraph/scenegraph.js.map +1 -1
  81. package/cjs/scenegraph/stick-text/index.js +5 -6
  82. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  83. package/cjs/scenegraph/style/frame-border.d.ts +1 -1
  84. package/cjs/scenegraph/style/frame-border.js +27 -12
  85. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  86. package/cjs/scenegraph/utils/get-cell-merge.js +1 -1
  87. package/cjs/scenegraph/utils/get-cell-merge.js.map +1 -1
  88. package/cjs/scenegraph/utils/get-hierarchy-offset.js +6 -8
  89. package/cjs/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
  90. package/cjs/scenegraph/utils/text-icon-layout.js +6 -4
  91. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  92. package/cjs/themes/theme.d.ts +2 -0
  93. package/cjs/themes/theme.js +13 -4
  94. package/cjs/themes/theme.js.map +1 -1
  95. package/cjs/tools/helper.d.ts +1 -1
  96. package/cjs/tools/helper.js +3 -3
  97. package/cjs/tools/helper.js.map +1 -1
  98. package/cjs/ts-types/base-table.d.ts +9 -0
  99. package/cjs/ts-types/base-table.js.map +1 -1
  100. package/cjs/ts-types/column/style.d.ts +2 -2
  101. package/cjs/ts-types/column/style.js.map +1 -1
  102. package/cjs/ts-types/component/index.d.ts +1 -0
  103. package/cjs/ts-types/component/index.js +21 -0
  104. package/cjs/ts-types/component/index.js.map +1 -0
  105. package/cjs/ts-types/index.d.ts +1 -0
  106. package/cjs/ts-types/index.js +1 -1
  107. package/cjs/ts-types/index.js.map +1 -1
  108. package/cjs/ts-types/list-table/layout-map/api.d.ts +1 -0
  109. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  110. package/cjs/ts-types/new-data-set.d.ts +1 -0
  111. package/cjs/ts-types/new-data-set.js.map +1 -1
  112. package/cjs/ts-types/table-engine.d.ts +10 -0
  113. package/cjs/ts-types/table-engine.js.map +1 -1
  114. package/cjs/ts-types/theme.d.ts +2 -1
  115. package/cjs/ts-types/theme.js.map +1 -1
  116. package/cjs/vrender.d.ts +1 -1
  117. package/cjs/vrender.js +2 -1
  118. package/cjs/vrender.js.map +1 -1
  119. package/dist/vtable.js +8405 -5360
  120. package/dist/vtable.min.js +2 -2
  121. package/es/ListTable-all.js +5 -3
  122. package/es/ListTable-all.js.map +1 -1
  123. package/es/ListTable.d.ts +3 -0
  124. package/es/ListTable.js +44 -286
  125. package/es/ListTable.js.map +1 -1
  126. package/es/body-helper/style/Style.d.ts +2 -2
  127. package/es/body-helper/style/Style.js.map +1 -1
  128. package/es/components/title/title.js +3 -1
  129. package/es/components/title/title.js.map +1 -1
  130. package/es/core/BaseTable.d.ts +5 -3
  131. package/es/core/BaseTable.js +16 -87
  132. package/es/core/BaseTable.js.map +1 -1
  133. package/es/core/group-helper.d.ts +6 -0
  134. package/es/core/group-helper.js +14 -0
  135. package/es/core/group-helper.js.map +1 -0
  136. package/es/core/record-helper.d.ts +8 -0
  137. package/es/core/record-helper.js +332 -0
  138. package/es/core/record-helper.js.map +1 -0
  139. package/es/core/style-helper.d.ts +3 -0
  140. package/es/core/style-helper.js +86 -0
  141. package/es/core/style-helper.js.map +1 -0
  142. package/es/core/tableHelper.d.ts +0 -2
  143. package/es/core/tableHelper.js +12 -17
  144. package/es/core/tableHelper.js.map +1 -1
  145. package/es/data/CachedDataSource.d.ts +10 -1
  146. package/es/data/CachedDataSource.js +103 -0
  147. package/es/data/CachedDataSource.js.map +1 -1
  148. package/es/dataset/dataset.js +1 -2
  149. package/es/edit/edit-manager.js +2 -1
  150. package/es/event/event.js +3 -1
  151. package/es/event/event.js.map +1 -1
  152. package/es/header-helper/style/Style.d.ts +2 -2
  153. package/es/header-helper/style/Style.js.map +1 -1
  154. package/es/index.d.ts +3 -1
  155. package/es/index.js +5 -1
  156. package/es/index.js.map +1 -1
  157. package/es/layout/cell-range/simple-cell-range.d.ts +4 -0
  158. package/es/layout/cell-range/simple-cell-range.js +99 -0
  159. package/es/layout/cell-range/simple-cell-range.js.map +1 -0
  160. package/es/layout/layout-helper.js +2 -2
  161. package/es/layout/layout-helper.js.map +1 -1
  162. package/es/layout/pivot-header-layout.js +4 -2
  163. package/es/layout/pivot-header-layout.js.map +1 -1
  164. package/es/layout/row-height-map.js +2 -1
  165. package/es/layout/simple-header-layout.d.ts +1 -2
  166. package/es/layout/simple-header-layout.js +7 -89
  167. package/es/layout/simple-header-layout.js.map +1 -1
  168. package/es/plugins/icons.js +1 -1
  169. package/es/plugins/list-tree-stick-cell.d.ts +16 -0
  170. package/es/plugins/list-tree-stick-cell.js +176 -0
  171. package/es/plugins/list-tree-stick-cell.js.map +1 -0
  172. package/es/plugins/themes.js +1 -1
  173. package/es/scenegraph/component/custom.js +1 -1
  174. package/es/scenegraph/component/custom.js.map +1 -1
  175. package/es/scenegraph/graphic/contributions/group-contribution-render.js +8 -3
  176. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  177. package/es/scenegraph/graphic/contributions/rect-contribution-render.d.ts +1 -0
  178. package/es/scenegraph/graphic/contributions/rect-contribution-render.js +49 -5
  179. package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  180. package/es/scenegraph/graphic/group.js +1 -1
  181. package/es/scenegraph/graphic/group.js.map +1 -1
  182. package/es/scenegraph/group-creater/cell-helper.d.ts +2 -1
  183. package/es/scenegraph/group-creater/cell-helper.js +23 -8
  184. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  185. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +9 -1
  186. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  187. package/es/scenegraph/group-creater/column-helper.js +8 -2
  188. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  189. package/es/scenegraph/group-creater/init-scenegraph.js +2 -2
  190. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  191. package/es/scenegraph/layout/compute-col-width.js +1 -3
  192. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  193. package/es/scenegraph/layout/compute-row-height.js +2 -2
  194. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  195. package/es/scenegraph/layout/update-height.js +3 -1
  196. package/es/scenegraph/layout/update-height.js.map +1 -1
  197. package/es/scenegraph/layout/update-width.js +5 -3
  198. package/es/scenegraph/layout/update-width.js.map +1 -1
  199. package/es/scenegraph/scenegraph.js +54 -39
  200. package/es/scenegraph/scenegraph.js.map +1 -1
  201. package/es/scenegraph/stick-text/index.js +5 -6
  202. package/es/scenegraph/stick-text/index.js.map +1 -1
  203. package/es/scenegraph/style/frame-border.d.ts +1 -1
  204. package/es/scenegraph/style/frame-border.js +27 -10
  205. package/es/scenegraph/style/frame-border.js.map +1 -1
  206. package/es/scenegraph/utils/get-cell-merge.js +1 -1
  207. package/es/scenegraph/utils/get-cell-merge.js.map +1 -1
  208. package/es/scenegraph/utils/get-hierarchy-offset.js +7 -9
  209. package/es/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
  210. package/es/scenegraph/utils/text-icon-layout.js +6 -4
  211. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  212. package/es/themes/theme.d.ts +2 -0
  213. package/es/themes/theme.js +13 -4
  214. package/es/themes/theme.js.map +1 -1
  215. package/es/tools/helper.d.ts +1 -1
  216. package/es/tools/helper.js +1 -1
  217. package/es/tools/helper.js.map +1 -1
  218. package/es/ts-types/base-table.d.ts +9 -0
  219. package/es/ts-types/base-table.js.map +1 -1
  220. package/es/ts-types/column/style.d.ts +2 -2
  221. package/es/ts-types/column/style.js.map +1 -1
  222. package/es/ts-types/component/index.d.ts +1 -0
  223. package/es/ts-types/component/index.js +2 -0
  224. package/es/ts-types/component/index.js.map +1 -0
  225. package/es/ts-types/index.d.ts +1 -0
  226. package/es/ts-types/index.js +2 -0
  227. package/es/ts-types/index.js.map +1 -1
  228. package/es/ts-types/list-table/layout-map/api.d.ts +1 -0
  229. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  230. package/es/ts-types/new-data-set.d.ts +1 -0
  231. package/es/ts-types/new-data-set.js.map +1 -1
  232. package/es/ts-types/table-engine.d.ts +10 -0
  233. package/es/ts-types/table-engine.js.map +1 -1
  234. package/es/ts-types/theme.d.ts +2 -1
  235. package/es/ts-types/theme.js.map +1 -1
  236. package/es/vrender.d.ts +1 -1
  237. package/es/vrender.js +3 -2
  238. package/es/vrender.js.map +1 -1
  239. package/package.json +9 -8
@@ -0,0 +1,6 @@
1
+ import type { GroupByOption } from '../ts-types';
2
+ export declare function getGroupByDataConfig(groupByOption: GroupByOption): {
3
+ groupByRules: string[];
4
+ } | {
5
+ groupByRules?: undefined;
6
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.getGroupByDataConfig = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils");
8
+
9
+ function getGroupByDataConfig(groupByOption) {
10
+ if ((0, vutils_1.isString)(groupByOption)) return {
11
+ groupByRules: [ groupByOption ]
12
+ };
13
+ if ((0, vutils_1.isArray)(groupByOption)) {
14
+ return {
15
+ groupByRules: groupByOption.map((item => (0, vutils_1.isString)(item) ? item : item.key))
16
+ };
17
+ }
18
+ return {};
19
+ }
20
+
21
+ exports.getGroupByDataConfig = getGroupByDataConfig;
22
+ //# sourceMappingURL=group-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/group-helper.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAGrD,SAAgB,oBAAoB,CAAC,aAA4B;IAE/D,IAAI,IAAA,iBAAQ,EAAC,aAAa,CAAC,EAAE;QAC3B,OAAO,EAAE,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;KAC1C;IACD,IAAI,IAAA,gBAAO,EAAC,aAAa,CAAC,EAAE;QAC1B,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,EAAE;gBAClB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAhBD,oDAgBC","file":"group-helper.js","sourcesContent":["import { isArray, isString } from '@visactor/vutils';\nimport type { GroupByOption } from '../ts-types';\n\nexport function getGroupByDataConfig(groupByOption: GroupByOption) {\n // no sort temply\n if (isString(groupByOption)) {\n return { groupByRules: [groupByOption] };\n }\n if (isArray(groupByOption)) {\n const groupByRules = groupByOption.map(item => {\n if (isString(item)) {\n return item;\n }\n return item.key;\n });\n return { groupByRules };\n }\n\n return {};\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { ListTable } from '../ListTable';
2
+ export declare function listTableChangeCellValue(col: number, row: number, value: string | number | null, workOnEditableCell: boolean, table: ListTable): void;
3
+ export declare function listTableChangeCellValues(startCol: number, startRow: number, values: (string | number)[][], workOnEditableCell: boolean, table: ListTable): void;
4
+ export declare function sortRecords(table: ListTable): void;
5
+ export declare function listTableAddRecord(record: any, recordIndex: number, table: ListTable): void;
6
+ export declare function listTableAddRecords(records: any[], recordIndex: number, table: ListTable): void;
7
+ export declare function listTableDeleteRecords(recordIndexs: number[], table: ListTable): void;
8
+ export declare function listTableUpdateRecords(records: any[], recordIndexs: number[], table: ListTable): void;
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.listTableUpdateRecords = exports.listTableDeleteRecords = exports.listTableAddRecords = exports.listTableAddRecord = exports.sortRecords = exports.listTableChangeCellValues = exports.listTableChangeCellValue = void 0;
6
+
7
+ const compute_col_width_1 = require("../scenegraph/layout/compute-col-width"), compute_row_height_1 = require("../scenegraph/layout/compute-row-height"), util_1 = require("../tools/util"), TABLE_EVENT_TYPE_1 = require("./TABLE_EVENT_TYPE");
8
+
9
+ function listTableChangeCellValue(col, row, value, workOnEditableCell, table) {
10
+ if (workOnEditableCell && table.isHasEditorDefine(col, row) || !1 === workOnEditableCell) {
11
+ const recordIndex = table.getRecordShowIndexByCell(col, row), {field: field} = table.internalProps.layoutMap.getBody(col, row), beforeChangeValue = table.getCellRawValue(col, row), oldValue = table.getCellOriginValue(col, row);
12
+ table.isHeader(col, row) ? table.internalProps.layoutMap.updateColumnTitle(col, row, value) : table.dataSource.changeFieldValue(value, recordIndex, field, col, row, table);
13
+ const range = table.getCellRange(col, row), aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);
14
+ if (aggregators) {
15
+ if (Array.isArray(aggregators)) for (let i = 0; i < (null == aggregators ? void 0 : aggregators.length); i++) aggregators[i].recalculate(); else aggregators.recalculate();
16
+ const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(range.start.col, range.start.row, range.end.col, range.end.row);
17
+ for (let i = 0; i < aggregatorCells.length; i++) {
18
+ const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);
19
+ for (let sCol = range.start.col; sCol <= range.end.col; sCol++) for (let sRow = range.start.row; sRow <= range.end.row; sRow++) table.scenegraph.updateCellContent(sCol, sRow);
20
+ }
21
+ }
22
+ for (let sCol = range.start.col; sCol <= range.end.col; sCol++) for (let sRow = range.start.row; sRow <= range.end.row; sRow++) table.scenegraph.updateCellContent(sCol, sRow);
23
+ if ("adaptive" === table.widthMode || table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth) 0 === table.internalProps._widthResizedColMap.size && table.scenegraph.recalculateColWidths(); else if (!table.internalProps._widthResizedColMap.has(col)) {
24
+ const oldWidth = table.getColWidth(col), newWidth = (0, compute_col_width_1.computeColWidth)(col, 0, table.rowCount - 1, table, !1);
25
+ newWidth !== oldWidth && table.scenegraph.updateColWidth(col, newWidth - oldWidth);
26
+ }
27
+ if ("adaptive" === table.heightMode || table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight) 0 === table.internalProps._heightResizedRowMap.size && table.scenegraph.recalculateRowHeights(); else if ("autoHeight" === table.heightMode && !table.internalProps._heightResizedRowMap.has(row)) {
28
+ const oldHeight = table.getRowHeight(row), newHeight = (0, compute_row_height_1.computeRowHeight)(row, 0, table.colCount - 1, table);
29
+ table.scenegraph.updateRowHeight(row, newHeight - oldHeight);
30
+ }
31
+ table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {
32
+ col: col,
33
+ row: row,
34
+ rawValue: beforeChangeValue,
35
+ currentValue: oldValue,
36
+ changedValue: table.getCellOriginValue(col, row)
37
+ }), table.scenegraph.updateNextFrame();
38
+ }
39
+ }
40
+
41
+ function listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, table) {
42
+ let pasteColEnd = startCol, pasteRowEnd = startRow;
43
+ const beforeChangeValues = [], oldValues = [];
44
+ let cellUpdateType;
45
+ for (let i = 0; i < values.length && !(startRow + i > table.rowCount - 1); i++) {
46
+ const rowValues = values[i], rawRowValues = [], oldRowValues = [];
47
+ beforeChangeValues.push(rawRowValues), oldValues.push(oldRowValues);
48
+ for (let j = 0; j < rowValues.length && !(startCol + j > table.colCount - 1); j++) {
49
+ cellUpdateType = getCellUpdateType(startCol + j, startRow + i, table, cellUpdateType);
50
+ const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);
51
+ rawRowValues.push(beforeChangeValue);
52
+ const oldValue = table.getCellOriginValue(startCol + j, startRow + i);
53
+ oldRowValues.push(oldValue);
54
+ }
55
+ }
56
+ for (let i = 0; i < values.length && !(startRow + i > table.rowCount - 1); i++) {
57
+ pasteRowEnd = startRow + i;
58
+ const rowValues = values[i];
59
+ let thisRowPasteColEnd = startCol;
60
+ for (let j = 0; j < rowValues.length && !(startCol + j > table.colCount - 1); j++) if (thisRowPasteColEnd = startCol + j,
61
+ workOnEditableCell && table.isHasEditorDefine(startCol + j, startRow + i) || !1 === workOnEditableCell) {
62
+ const value = rowValues[j], recordIndex = table.getRecordShowIndexByCell(startCol + j, startRow + i), {field: field} = table.internalProps.layoutMap.getBody(startCol + j, startRow + i), beforeChangeValue = beforeChangeValues[i][j], oldValue = oldValues[i][j];
63
+ table.isHeader(startCol + j, startRow + i) ? table.internalProps.layoutMap.updateColumnTitle(startCol + j, startRow + i, value) : table.dataSource.changeFieldValue(value, recordIndex, field, startCol + j, startRow + i, table),
64
+ table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {
65
+ col: startCol + j,
66
+ row: startRow + i,
67
+ rawValue: beforeChangeValue,
68
+ currentValue: oldValue,
69
+ changedValue: table.getCellOriginValue(startCol + j, startRow + i)
70
+ });
71
+ }
72
+ pasteColEnd = Math.max(pasteColEnd, thisRowPasteColEnd);
73
+ }
74
+ const startRange = table.getCellRange(startCol, startRow), range = table.getCellRange(pasteColEnd, pasteRowEnd), aggregators = table.internalProps.layoutMap.getAggregatorsByCellRange(startRange.start.col, startRange.start.row, range.end.col, range.end.row);
75
+ if (aggregators) {
76
+ for (let i = 0; i < (null == aggregators ? void 0 : aggregators.length); i++) aggregators[i].recalculate();
77
+ if ("normal" === cellUpdateType) {
78
+ const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(startRange.start.col, startRange.start.row, range.end.col, range.end.row);
79
+ for (let i = 0; i < aggregatorCells.length; i++) {
80
+ const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);
81
+ for (let sCol = range.start.col; sCol <= range.end.col; sCol++) for (let sRow = range.start.row; sRow <= range.end.row; sRow++) table.scenegraph.updateCellContent(sCol, sRow);
82
+ }
83
+ }
84
+ }
85
+ if ("group" === cellUpdateType && table.dataSource.updateRecordsForGroup([], []),
86
+ "sort" === cellUpdateType || "group" === cellUpdateType) return table.dataSource.sortedIndexMap.clear(),
87
+ sortRecords(table), table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(),
88
+ table.scenegraph.clearCells(), void table.scenegraph.createSceneGraph();
89
+ for (let sCol = startRange.start.col; sCol <= range.end.col; sCol++) for (let sRow = startRange.start.row; sRow <= range.end.row; sRow++) table.scenegraph.updateCellContent(sCol, sRow);
90
+ if ("adaptive" === table.widthMode || table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth) 0 === table.internalProps._widthResizedColMap.size && table.scenegraph.recalculateColWidths(); else for (let sCol = startCol; sCol <= range.end.col; sCol++) if (!table.internalProps._widthResizedColMap.has(sCol)) {
91
+ const oldWidth = table.getColWidth(sCol), newWidth = (0, compute_col_width_1.computeColWidth)(sCol, 0, table.rowCount - 1, table, !1);
92
+ newWidth !== oldWidth && table.scenegraph.updateColWidth(sCol, newWidth - oldWidth);
93
+ }
94
+ if ("adaptive" === table.heightMode || table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight) table.scenegraph.recalculateRowHeights(); else if ("autoHeight" === table.heightMode) {
95
+ const rows = [], deltaYs = [];
96
+ for (let sRow = startRow; sRow <= range.end.row; sRow++) if (table.rowHeightsMap.get(sRow)) {
97
+ const oldHeight = table.getRowHeight(sRow), newHeight = (0, compute_row_height_1.computeRowHeight)(sRow, 0, table.colCount - 1, table);
98
+ rows.push(sRow), deltaYs.push(newHeight - oldHeight);
99
+ }
100
+ table.scenegraph.updateRowsHeight(rows, deltaYs);
101
+ }
102
+ table.scenegraph.updateNextFrame();
103
+ }
104
+
105
+ function getCellUpdateType(col, row, table, oldCellUpdateType) {
106
+ if ("group" === oldCellUpdateType) return oldCellUpdateType;
107
+ if ("sort" === oldCellUpdateType && !table.options.groupBy) return oldCellUpdateType;
108
+ let cellUpdateType = "normal";
109
+ if (table.options.groupBy) cellUpdateType = "group"; else if (!table.isHeader(col, row) && table.dataSource.lastOrderField) {
110
+ table.getBodyField(col, row) === table.dataSource.lastOrderField && (cellUpdateType = "sort");
111
+ }
112
+ return cellUpdateType;
113
+ }
114
+
115
+ function sortRecords(table) {
116
+ var _a;
117
+ if (table.sortState) {
118
+ let order, field;
119
+ if (Array.isArray(table.sortState) ? 0 !== table.sortState.length && ({order: order, field: field} = null === (_a = table.sortState) || void 0 === _a ? void 0 : _a[0]) : ({order: order, field: field} = table.sortState),
120
+ order && field && "normal" !== order) {
121
+ const sortFunc = table._getSortFuncFromHeaderOption(void 0, field), hd = table.internalProps.layoutMap.headerObjects.find((col => col && col.field === field));
122
+ table.dataSource.sort(hd.field, order, null != sortFunc ? sortFunc : util_1.defaultOrderFn);
123
+ }
124
+ }
125
+ }
126
+
127
+ function listTableAddRecord(record, recordIndex, table) {
128
+ var _a, _b;
129
+ if (table.options.groupBy) null === (_b = (_a = table.dataSource).addRecordsForGroup) || void 0 === _b || _b.call(_a, [ record ]),
130
+ table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(), table.scenegraph.clearCells(),
131
+ table.scenegraph.createSceneGraph(); else if (table.sortState) table.dataSource.addRecordForSorted(record),
132
+ sortRecords(table), table.refreshRowColCount(), table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(); else {
133
+ (void 0 === recordIndex || recordIndex > table.dataSource.sourceLength) && (recordIndex = table.dataSource.sourceLength);
134
+ const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;
135
+ table.dataSource.addRecord(record, recordIndex);
136
+ const oldRowCount = table.rowCount;
137
+ if (table.refreshRowColCount(), 0 === table.scenegraph.proxy.totalActualBodyRowCount) return table.scenegraph.clearCells(),
138
+ void table.scenegraph.createSceneGraph();
139
+ const newRowCount = table.transpose ? table.colCount : table.rowCount;
140
+ if (table.pagination) {
141
+ const {perPageCount: perPageCount, currentPage: currentPage} = table.pagination, endIndex = perPageCount * (currentPage || 0) + perPageCount;
142
+ if (recordIndex < endIndex) if (recordIndex < endIndex - perPageCount) table.scenegraph.clearCells(),
143
+ table.scenegraph.createSceneGraph(); else {
144
+ const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;
145
+ if (oldRowCount - headerCount === table.pagination.perPageCount) {
146
+ const updateRows = [];
147
+ for (let row = rowNum; row < newRowCount; row++) table.transpose ? updateRows.push({
148
+ col: row,
149
+ row: 0
150
+ }) : updateRows.push({
151
+ col: 0,
152
+ row: row
153
+ });
154
+ table.transpose ? table.scenegraph.updateCol([], [], updateRows) : table.scenegraph.updateRow([], [], updateRows);
155
+ } else {
156
+ const addRows = [];
157
+ for (let row = rowNum; row < Math.min(newRowCount, rowNum + 1); row++) table.transpose ? addRows.push({
158
+ col: row,
159
+ row: 0
160
+ }) : addRows.push({
161
+ col: 0,
162
+ row: row
163
+ });
164
+ table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);
165
+ }
166
+ }
167
+ } else {
168
+ const addRows = [];
169
+ for (let row = recordIndex + headerCount; row < recordIndex + headerCount + 1; row++) table.transpose ? addRows.push({
170
+ col: row,
171
+ row: 0
172
+ }) : addRows.push({
173
+ col: 0,
174
+ row: row
175
+ });
176
+ table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);
177
+ }
178
+ }
179
+ }
180
+
181
+ function listTableAddRecords(records, recordIndex, table) {
182
+ var _a, _b;
183
+ if (table.options.groupBy) null === (_b = (_a = table.dataSource).addRecordsForGroup) || void 0 === _b || _b.call(_a, records),
184
+ table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(), table.scenegraph.clearCells(),
185
+ table.scenegraph.createSceneGraph(); else if (table.sortState) table.dataSource.addRecordsForSorted(records),
186
+ sortRecords(table), table.refreshRowColCount(), table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(); else {
187
+ void 0 === recordIndex || recordIndex > table.dataSource.sourceLength ? recordIndex = table.dataSource.sourceLength : recordIndex < 0 && (recordIndex = 0);
188
+ const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;
189
+ table.dataSource.addRecords(records, recordIndex);
190
+ const oldRowCount = table.transpose ? table.colCount : table.rowCount;
191
+ if (table.refreshRowColCount(), 0 === table.scenegraph.proxy.totalActualBodyRowCount) return table.scenegraph.clearCells(),
192
+ void table.scenegraph.createSceneGraph();
193
+ const newRowCount = table.transpose ? table.colCount : table.rowCount;
194
+ if (table.pagination) {
195
+ const {perPageCount: perPageCount, currentPage: currentPage} = table.pagination, endIndex = perPageCount * (currentPage || 0) + perPageCount;
196
+ if (recordIndex < endIndex) if (recordIndex < endIndex - perPageCount) table.scenegraph.clearCells(),
197
+ table.scenegraph.createSceneGraph(); else {
198
+ const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;
199
+ if (oldRowCount - headerCount === table.pagination.perPageCount) {
200
+ const updateRows = [];
201
+ for (let row = rowNum; row < newRowCount; row++) table.transpose ? updateRows.push({
202
+ col: row,
203
+ row: 0
204
+ }) : updateRows.push({
205
+ col: 0,
206
+ row: row
207
+ });
208
+ table.transpose ? table.scenegraph.updateCol([], [], updateRows) : table.scenegraph.updateRow([], [], updateRows);
209
+ } else {
210
+ const addRows = [];
211
+ for (let row = rowNum; row < Math.min(newRowCount, rowNum + (Array.isArray(records) ? records.length : 1)); row++) table.transpose ? addRows.push({
212
+ col: row,
213
+ row: 0
214
+ }) : addRows.push({
215
+ col: 0,
216
+ row: row
217
+ });
218
+ table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);
219
+ }
220
+ }
221
+ } else {
222
+ const addRows = [];
223
+ for (let row = recordIndex + headerCount; row < recordIndex + headerCount + (Array.isArray(records) ? records.length : 1); row++) table.transpose ? addRows.push({
224
+ col: row,
225
+ row: 0
226
+ }) : addRows.push({
227
+ col: 0,
228
+ row: row
229
+ });
230
+ table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);
231
+ }
232
+ }
233
+ }
234
+
235
+ function listTableDeleteRecords(recordIndexs, table) {
236
+ var _a, _b;
237
+ if ((null == recordIndexs ? void 0 : recordIndexs.length) > 0) if (table.options.groupBy) null === (_b = (_a = table.dataSource).deleteRecordsForGroup) || void 0 === _b || _b.call(_a, recordIndexs),
238
+ table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(), table.scenegraph.clearCells(),
239
+ table.scenegraph.createSceneGraph(); else if (table.sortState) table.dataSource.deleteRecordsForSorted(recordIndexs),
240
+ sortRecords(table), table.refreshRowColCount(), table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(); else {
241
+ const deletedRecordIndexs = table.dataSource.deleteRecords(recordIndexs);
242
+ if (0 === deletedRecordIndexs.length) return;
243
+ const oldRowCount = table.transpose ? table.colCount : table.rowCount;
244
+ table.refreshRowColCount();
245
+ const newRowCount = table.transpose ? table.colCount : table.rowCount, recordIndexsMinToMax = deletedRecordIndexs.sort(((a, b) => a - b)), minRecordIndex = recordIndexsMinToMax[0];
246
+ if (table.pagination) {
247
+ const {perPageCount: perPageCount, currentPage: currentPage} = table.pagination, endIndex = perPageCount * (currentPage || 0) + perPageCount;
248
+ if (minRecordIndex < endIndex) if (minRecordIndex < endIndex - perPageCount) table.scenegraph.clearCells(),
249
+ table.scenegraph.createSceneGraph(); else {
250
+ const updateRows = [], delRows = [];
251
+ for (let row = minRecordIndex - (endIndex - perPageCount) + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount); row < newRowCount; row++) table.transpose ? updateRows.push({
252
+ col: row,
253
+ row: 0
254
+ }) : updateRows.push({
255
+ col: 0,
256
+ row: row
257
+ });
258
+ if (newRowCount < oldRowCount) for (let row = newRowCount; row < oldRowCount; row++) table.transpose ? delRows.push({
259
+ col: row,
260
+ row: 0
261
+ }) : delRows.push({
262
+ col: 0,
263
+ row: row
264
+ });
265
+ table.transpose ? table.scenegraph.updateCol(delRows, [], updateRows) : table.scenegraph.updateRow(delRows, [], updateRows);
266
+ }
267
+ } else {
268
+ const delRows = [];
269
+ for (let index = 0; index < recordIndexsMinToMax.length; index++) {
270
+ const rowNum = recordIndexsMinToMax[index] + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);
271
+ table.transpose ? delRows.push({
272
+ col: rowNum,
273
+ row: 0
274
+ }) : delRows.push({
275
+ col: 0,
276
+ row: rowNum
277
+ });
278
+ }
279
+ table.transpose ? table.scenegraph.updateCol(delRows, [], []) : table.scenegraph.updateRow(delRows, [], []);
280
+ }
281
+ }
282
+ }
283
+
284
+ function listTableUpdateRecords(records, recordIndexs, table) {
285
+ var _a, _b;
286
+ if ((null == recordIndexs ? void 0 : recordIndexs.length) > 0) if (table.options.groupBy) null === (_b = (_a = table.dataSource).updateRecordsForGroup) || void 0 === _b || _b.call(_a, records, recordIndexs),
287
+ table.refreshRowColCount(), table.internalProps.layoutMap.clearCellRangeMap(), table.scenegraph.clearCells(),
288
+ table.scenegraph.createSceneGraph(); else if (table.sortState) table.dataSource.updateRecordsForSorted(records, recordIndexs),
289
+ sortRecords(table), table.refreshRowColCount(), table.scenegraph.clearCells(), table.scenegraph.createSceneGraph(); else {
290
+ const updateRecordIndexs = table.dataSource.updateRecords(records, recordIndexs);
291
+ if (0 === updateRecordIndexs.length) return;
292
+ const recordIndexsMinToMax = updateRecordIndexs.sort(((a, b) => a - b));
293
+ if (table.pagination) {
294
+ const {perPageCount: perPageCount, currentPage: currentPage} = table.pagination, endIndex = perPageCount * (currentPage || 0) + perPageCount, updateRows = [];
295
+ for (let index = 0; index < recordIndexsMinToMax.length; index++) {
296
+ const recordIndex = recordIndexsMinToMax[index];
297
+ if (recordIndex < endIndex && recordIndex >= endIndex - perPageCount) {
298
+ const rowNum = recordIndex - (endIndex - perPageCount) + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);
299
+ updateRows.push(rowNum);
300
+ }
301
+ }
302
+ if (updateRows.length >= 1) {
303
+ const updateRowCells = [];
304
+ for (let index = 0; index < updateRows.length; index++) {
305
+ const updateRow = updateRows[index];
306
+ table.transpose ? updateRowCells.push({
307
+ col: updateRow,
308
+ row: 0
309
+ }) : updateRowCells.push({
310
+ col: 0,
311
+ row: updateRow
312
+ });
313
+ }
314
+ table.transpose ? table.scenegraph.updateCol([], [], updateRowCells) : table.scenegraph.updateRow([], [], updateRowCells);
315
+ }
316
+ } else {
317
+ const updateRows = [];
318
+ for (let index = 0; index < recordIndexsMinToMax.length; index++) {
319
+ const rowNum = recordIndexsMinToMax[index] + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);
320
+ table.transpose ? updateRows.push({
321
+ col: rowNum,
322
+ row: 0
323
+ }) : updateRows.push({
324
+ col: 0,
325
+ row: rowNum
326
+ });
327
+ }
328
+ table.transpose ? table.scenegraph.updateCol([], [], updateRows) : table.scenegraph.updateRow([], [], updateRows);
329
+ }
330
+ }
331
+ }
332
+
333
+ exports.listTableChangeCellValue = listTableChangeCellValue, exports.listTableChangeCellValues = listTableChangeCellValues,
334
+ exports.sortRecords = sortRecords, exports.listTableAddRecord = listTableAddRecord,
335
+ exports.listTableAddRecords = listTableAddRecords, exports.listTableDeleteRecords = listTableDeleteRecords,
336
+ exports.listTableUpdateRecords = listTableUpdateRecords;
337
+ //# sourceMappingURL=record-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/record-helper.ts"],"names":[],"mappings":"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","file":"record-helper.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { ListTable } from '../ListTable';\nimport type { CachedDataSource } from '../data';\nimport { computeColWidth } from '../scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from '../scenegraph/layout/compute-row-height';\nimport { defaultOrderFn } from '../tools/util';\nimport type { SortState } from '../ts-types';\nimport { TABLE_EVENT_TYPE } from './TABLE_EVENT_TYPE';\n\n/**\n * 更改单元格数据 会触发change_cell_value事件\n * @param col\n * @param row\n * @param value 更改后的值\n * @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值\n */\nexport function listTableChangeCellValue(\n col: number,\n row: number,\n value: string | number | null,\n workOnEditableCell: boolean,\n table: ListTable\n) {\n if ((workOnEditableCell && table.isHasEditorDefine(col, row)) || workOnEditableCell === false) {\n const recordIndex = table.getRecordShowIndexByCell(col, row);\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n const beforeChangeValue = table.getCellRawValue(col, row);\n const oldValue = table.getCellOriginValue(col, row);\n if (table.isHeader(col, row)) {\n table.internalProps.layoutMap.updateColumnTitle(col, row, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordIndex, field, col, row, table);\n }\n const range = table.getCellRange(col, row);\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);\n if (aggregators) {\n if (Array.isArray(aggregators)) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n } else {\n aggregators.recalculate();\n }\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n range.start.col,\n range.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n\n // const cell_value = table.getCellValue(col, row);\n\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else if (!table.internalProps._widthResizedColMap.has(col)) {\n const oldWidth = table.getColWidth(col);\n const newWidth = computeColWidth(col, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(col, newWidth - oldWidth);\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n if (table.internalProps._heightResizedRowMap.size === 0) {\n table.scenegraph.recalculateRowHeights();\n }\n } else if (table.heightMode === 'autoHeight' && !table.internalProps._heightResizedRowMap.has(row)) {\n const oldHeight = table.getRowHeight(row);\n const newHeight = computeRowHeight(row, 0, table.colCount - 1, table);\n table.scenegraph.updateRowHeight(row, newHeight - oldHeight);\n }\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col,\n row,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue: table.getCellOriginValue(col, row)\n });\n table.scenegraph.updateNextFrame();\n }\n}\n/**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n */\nexport function listTableChangeCellValues(\n startCol: number,\n startRow: number,\n values: (string | number)[][],\n workOnEditableCell: boolean,\n table: ListTable\n) {\n let pasteColEnd = startCol;\n let pasteRowEnd = startRow;\n // const rowCount = values.length;\n //#region 提前组织好未更改前的数据\n const beforeChangeValues: (string | number)[][] = [];\n const oldValues: (string | number)[][] = [];\n let cellUpdateType: 'normal' | 'sort' | 'group';\n\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n const rowValues = values[i];\n const rawRowValues: (string | number)[] = [];\n const oldRowValues: (string | number)[] = [];\n beforeChangeValues.push(rawRowValues);\n oldValues.push(oldRowValues);\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n cellUpdateType = getCellUpdateType(startCol + j, startRow + i, table, cellUpdateType);\n const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n rawRowValues.push(beforeChangeValue);\n const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n oldRowValues.push(oldValue);\n }\n }\n //#endregion\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n pasteRowEnd = startRow + i;\n const rowValues = values[i];\n let thisRowPasteColEnd = startCol;\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n thisRowPasteColEnd = startCol + j;\n if ((workOnEditableCell && table.isHasEditorDefine(startCol + j, startRow + i)) || workOnEditableCell === false) {\n const value = rowValues[j];\n const recordIndex = table.getRecordShowIndexByCell(startCol + j, startRow + i);\n const { field } = table.internalProps.layoutMap.getBody(startCol + j, startRow + i);\n // const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n // const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n const beforeChangeValue = beforeChangeValues[i][j];\n const oldValue = oldValues[i][j];\n if (table.isHeader(startCol + j, startRow + i)) {\n table.internalProps.layoutMap.updateColumnTitle(startCol + j, startRow + i, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordIndex, field, startCol + j, startRow + i, table);\n }\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col: startCol + j,\n row: startRow + i,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue: table.getCellOriginValue(startCol + j, startRow + i)\n });\n }\n }\n pasteColEnd = Math.max(pasteColEnd, thisRowPasteColEnd);\n }\n\n // const cell_value = table.getCellValue(col, row);\n const startRange = table.getCellRange(startCol, startRow);\n const range = table.getCellRange(pasteColEnd, pasteRowEnd);\n\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCellRange(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n\n if (aggregators) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n\n if (cellUpdateType === 'normal') {\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n }\n\n if (cellUpdateType === 'group') {\n (table.dataSource as CachedDataSource).updateRecordsForGroup([], []);\n }\n\n if (cellUpdateType === 'sort' || cellUpdateType === 'group') {\n (table.dataSource as any).sortedIndexMap.clear();\n sortRecords(table);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return;\n }\n\n for (let sCol = startRange.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = startRange.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else {\n for (let sCol = startCol; sCol <= range.end.col; sCol++) {\n if (!table.internalProps._widthResizedColMap.has(sCol)) {\n const oldWidth = table.getColWidth(sCol);\n const newWidth = computeColWidth(sCol, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(sCol, newWidth - oldWidth);\n }\n }\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n table.scenegraph.recalculateRowHeights();\n } else if (table.heightMode === 'autoHeight') {\n const rows: number[] = [];\n const deltaYs: number[] = [];\n for (let sRow = startRow; sRow <= range.end.row; sRow++) {\n if (table.rowHeightsMap.get(sRow)) {\n // 已经计算过行高的才走更新逻辑\n const oldHeight = table.getRowHeight(sRow);\n const newHeight = computeRowHeight(sRow, 0, table.colCount - 1, table);\n rows.push(sRow);\n deltaYs.push(newHeight - oldHeight);\n }\n }\n table.scenegraph.updateRowsHeight(rows, deltaYs);\n }\n\n table.scenegraph.updateNextFrame();\n}\n\ntype CellUpdateType = 'normal' | 'sort' | 'group';\nfunction getCellUpdateType(\n col: number,\n row: number,\n table: ListTable,\n oldCellUpdateType: CellUpdateType | undefined\n): CellUpdateType {\n if (oldCellUpdateType === 'group') {\n return oldCellUpdateType;\n }\n if (oldCellUpdateType === 'sort' && !table.options.groupBy) {\n return oldCellUpdateType;\n }\n let cellUpdateType: CellUpdateType = 'normal';\n if (table.options.groupBy) {\n cellUpdateType = 'group';\n } else if (!table.isHeader(col, row) && (table.dataSource as any).lastOrderField) {\n const field = table.getBodyField(col, row);\n if (field === (table.dataSource as any).lastOrderField) {\n cellUpdateType = 'sort';\n }\n }\n return cellUpdateType;\n}\n\nexport function sortRecords(table: ListTable) {\n if (table.sortState) {\n let order: any;\n let field: any;\n if (Array.isArray(table.sortState)) {\n if (table.sortState.length !== 0) {\n ({ order, field } = table.sortState?.[0]);\n }\n } else {\n ({ order, field } = table.sortState as SortState);\n }\n // 根据sort规则进行排序\n if (order && field && order !== 'normal') {\n const sortFunc = table._getSortFuncFromHeaderOption(undefined, field);\n // 如果sort传入的信息不能生成正确的sortFunc,直接更新表格,避免首次加载无法正常显示内容\n const hd = table.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === field);\n\n // hd?.define?.sort && //如果这里也判断 那想要利用sortState来排序 但不显示排序图标就实现不了\n table.dataSource.sort(hd.field, order, sortFunc ?? defaultOrderFn);\n }\n }\n}\n\n/**\n * 添加数据 单条数据\n * @param record 数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecord(record: any, recordIndex: number, table: ListTable) {\n if (table.options.groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.([record]);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordForSorted(record);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecord(record, recordIndex);\n const oldRowCount = table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (let row = rowNum; row < Math.min(newRowCount, rowNum + 1); row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (let row = recordIndex + headerCount; row < recordIndex + headerCount + 1; row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n}\n\n/**\n * 添加数据 支持多条数据\n * @param records 多条数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecords(records: any[], recordIndex: number, table: ListTable) {\n if (table.options.groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.(records);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordsForSorted(records);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n } else if (recordIndex < 0) {\n recordIndex = 0;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecords(records, recordIndex);\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (\n let row = rowNum;\n row < Math.min(newRowCount, rowNum + (Array.isArray(records) ? records.length : 1));\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (\n let row = recordIndex + headerCount;\n row < recordIndex + headerCount + (Array.isArray(records) ? records.length : 1);\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n}\n\n/**\n * 删除数据 支持多条数据\n * @param recordIndexs 要删除数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableDeleteRecords(recordIndexs: number[], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if (table.options.groupBy) {\n (table.dataSource as CachedDataSource).deleteRecordsForGroup?.(recordIndexs);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.deleteRecordsForSorted(recordIndexs);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const deletedRecordIndexs = table.dataSource.deleteRecords(recordIndexs);\n if (deletedRecordIndexs.length === 0) {\n return;\n }\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n const recordIndexsMinToMax = deletedRecordIndexs.sort((a, b) => a - b);\n const minRecordIndex = recordIndexsMinToMax[0];\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (minRecordIndex < endIndex) {\n //删除当前页或者前面的数据才需要更新 如果是删除的是当前页后面的数据不需要更新场景树\n if (minRecordIndex < endIndex - perPageCount) {\n // 如果删除包含当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是仅删除当前页数据\n const minRowNum =\n minRecordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);\n //如果当页数据是满的 则更新影响的部分行\n const updateRows = [];\n const delRows = [];\n\n for (let row = minRowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n if (newRowCount < oldRowCount) {\n //如果如果删除后不满 需要有删除数据\n for (let row = newRowCount; row < oldRowCount; row++) {\n if (table.transpose) {\n delRows.push({ col: row, row: 0 });\n } else {\n delRows.push({ col: 0, row });\n }\n }\n }\n table.transpose\n ? table.scenegraph.updateCol(delRows, [], updateRows)\n : table.scenegraph.updateRow(delRows, [], updateRows);\n }\n }\n } else {\n const delRows = [];\n\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);\n if (table.transpose) {\n delRows.push({ col: rowNum, row: 0 });\n } else {\n delRows.push({ col: 0, row: rowNum });\n }\n }\n table.transpose ? table.scenegraph.updateCol(delRows, [], []) : table.scenegraph.updateRow(delRows, [], []);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\n\n/**\n * 修改数据 支持多条数据\n * @param records 修改数据条目\n * @param recordIndexs 对应修改数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableUpdateRecords(records: any[], recordIndexs: number[], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if (table.options.groupBy) {\n (table.dataSource as CachedDataSource).updateRecordsForGroup?.(records, recordIndexs);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.updateRecordsForSorted(records, recordIndexs);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const updateRecordIndexs = table.dataSource.updateRecords(records, recordIndexs);\n if (updateRecordIndexs.length === 0) {\n return;\n }\n\n const recordIndexsMinToMax = updateRecordIndexs.sort((a, b) => a - b);\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n const updateRows = [];\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n if (recordIndex < endIndex && recordIndex >= endIndex - perPageCount) {\n const rowNum =\n recordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);\n updateRows.push(rowNum);\n }\n }\n if (updateRows.length >= 1) {\n const updateRowCells = [];\n for (let index = 0; index < updateRows.length; index++) {\n const updateRow = updateRows[index];\n if (table.transpose) {\n updateRowCells.push({ col: updateRow, row: 0 });\n } else {\n updateRowCells.push({ col: 0, row: updateRow });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRowCells)\n : table.scenegraph.updateRow([], [], updateRowCells);\n }\n } else {\n const updateRows = [];\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount);\n if (table.transpose) {\n updateRows.push({ col: rowNum, row: 0 });\n } else {\n updateRows.push({ col: 0, row: rowNum });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { BaseTableAPI } from '../ts-types/base-table';
2
+ import type { FullExtendStyle } from '../ts-types';
3
+ export declare function getCellStyle(col: number, row: number, table: BaseTableAPI): FullExtendStyle;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
4
+ void 0 === k2 && (k2 = k);
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
7
+ enumerable: !0,
8
+ get: function() {
9
+ return m[k];
10
+ }
11
+ }), Object.defineProperty(o, k2, desc);
12
+ } : function(o, m, k, k2) {
13
+ void 0 === k2 && (k2 = k), o[k2] = m[k];
14
+ }), __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
15
+ Object.defineProperty(o, "default", {
16
+ enumerable: !0,
17
+ value: v
18
+ });
19
+ } : function(o, v) {
20
+ o.default = v;
21
+ }), __importStar = this && this.__importStar || function(mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (null != mod) for (var k in mod) "default" !== k && Object.prototype.hasOwnProperty.call(mod, k) && __createBinding(result, mod, k);
25
+ return __setModuleDefault(result, mod), result;
26
+ };
27
+
28
+ Object.defineProperty(exports, "__esModule", {
29
+ value: !0
30
+ }), exports.getCellStyle = void 0;
31
+
32
+ const custom_cell_style_1 = require("../plugins/custom-cell-style"), get_axis_config_1 = require("../layout/chart-helper/get-axis-config"), vutils_1 = require("@visactor/vutils"), headerStyleContents = __importStar(require("../header-helper/style")), columnStyleContents = __importStar(require("../body-helper/style")), EMPTY_STYLE = {};
33
+
34
+ function getCellStyle(col, row, table) {
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
36
+ const customCellStyle = table.customCellStylePlugin.getCustomCellStyle(col, row), {layoutMap: layoutMap} = table.internalProps;
37
+ if (layoutMap.isHeader(col, row)) {
38
+ let cacheKey;
39
+ if (!table.isPivotTable() || table.isBottomFrozenRow(row) || table.isRightFrozenColumn(col)) cacheKey = `${col}-${row}`; else {
40
+ const define = table.getHeaderDefine(col, row), isCorner = table.isCornerHeader(col, row);
41
+ cacheKey = (null == define ? void 0 : define.dimensionKey) ? isCorner ? `dim-cor-${define.dimensionKey}` : `dim-${define.dimensionKey}` : (null == define ? void 0 : define.indicatorKey) ? `ind-${define.indicatorKey}` : `${col}-${row}`;
42
+ }
43
+ let cacheStyle = table.headerStyleCache.get(cacheKey);
44
+ if (cacheStyle) return customCellStyle ? (0, custom_cell_style_1.mergeStyle)(cacheStyle, customCellStyle) : cacheStyle;
45
+ const hd = layoutMap.getHeader(col, row);
46
+ let paddingForAxis;
47
+ if (table.isPivotChart() && (0, get_axis_config_1.isTopOrBottomAxis)(col, row, layoutMap) && layoutMap.isAxisCell(col, row)) {
48
+ paddingForAxis = null !== (_b = null === (_a = layoutMap.getBody(col, table.rowHeaderLevelCount).style) || void 0 === _a ? void 0 : _a.padding) && void 0 !== _b ? _b : table.theme.bodyStyle.padding;
49
+ } else if (table.isPivotChart() && (0, get_axis_config_1.isLeftOrRightAxis)(col, row, layoutMap) && layoutMap.isAxisCell(col, row)) {
50
+ paddingForAxis = null !== (_d = null === (_c = layoutMap.getBody(table.columnHeaderLevelCount, row).style) || void 0 === _c ? void 0 : _c.padding) && void 0 !== _d ? _d : table.theme.bodyStyle.padding;
51
+ }
52
+ if ((!hd || hd.isEmpty) && (layoutMap.isLeftBottomCorner(col, row) || layoutMap.isRightBottomCorner(col, row) || layoutMap.isCornerHeader(col, row) || layoutMap.isRightTopCorner(col, row))) return EMPTY_STYLE;
53
+ const styleClass = table.internalProps.headerHelper.getStyleClass((null == hd ? void 0 : hd.headerType) || "text");
54
+ if (layoutMap.isBottomFrozenRow(col, row) && table.theme.bottomFrozenStyle) cacheStyle = headerStyleContents.of(paddingForAxis ? {
55
+ padding: paddingForAxis
56
+ } : {}, table.theme.bottomFrozenStyle, {
57
+ col: col,
58
+ row: row,
59
+ table: table,
60
+ value: table.getCellValue(col, row),
61
+ dataValue: table.getCellOriginValue(col, row),
62
+ cellHeaderPaths: table.getCellHeaderPaths(col, row)
63
+ }, styleClass, table.options.autoWrapText, table.theme); else if (layoutMap.isRightFrozenColumn(col, row) && table.theme.rightFrozenStyle) cacheStyle = headerStyleContents.of(paddingForAxis ? {
64
+ padding: paddingForAxis
65
+ } : {}, table.theme.rightFrozenStyle, {
66
+ col: col,
67
+ row: row,
68
+ table: table,
69
+ value: table.getCellValue(col, row),
70
+ dataValue: table.getCellOriginValue(col, row),
71
+ cellHeaderPaths: table.getCellHeaderPaths(col, row)
72
+ }, styleClass, table.options.autoWrapText, table.theme); else {
73
+ const style = (null == hd ? void 0 : hd.style) || {};
74
+ paddingForAxis && (style.padding = paddingForAxis), cacheStyle = headerStyleContents.of(style, layoutMap.isColumnHeader(col, row) || layoutMap.isBottomFrozenRow(col, row) ? table.theme.headerStyle : layoutMap.isRowHeader(col, row) || layoutMap.isRightFrozenColumn(col, row) ? table.theme.rowHeaderStyle : table.theme.cornerHeaderStyle, {
75
+ col: col,
76
+ row: row,
77
+ table: table,
78
+ value: table.getCellValue(col, row),
79
+ dataValue: table.getCellOriginValue(col, row),
80
+ cellHeaderPaths: table.getCellHeaderPaths(col, row)
81
+ }, styleClass, table.options.autoWrapText, table.theme);
82
+ }
83
+ return table.headerStyleCache.set(cacheKey, cacheStyle), customCellStyle ? (0, custom_cell_style_1.mergeStyle)(cacheStyle, customCellStyle) : cacheStyle;
84
+ }
85
+ let bgColorFunc, cacheKey;
86
+ (null === (_f = null === (_e = table.internalProps) || void 0 === _e ? void 0 : _e.dataConfig) || void 0 === _f ? void 0 : _f.mappingRules) && !table.isHeader(col, row) && (null === (_j = null === (_h = null === (_g = table.internalProps) || void 0 === _g ? void 0 : _g.dataConfig) || void 0 === _h ? void 0 : _h.mappingRules) || void 0 === _j || _j.forEach(((mappingRule, i) => {
87
+ mappingRule.bgColor && table.internalProps.layoutMap.getIndicatorKey(col, row) === mappingRule.bgColor.indicatorKey && (bgColorFunc = mappingRule.bgColor.mapping);
88
+ })));
89
+ const cellType = table.getCellType(col, row), rawRecord = table.getCellOriginRecord(col, row);
90
+ let cacheStyle;
91
+ if (cacheKey = (null == rawRecord ? void 0 : rawRecord.vTableMerge) ? "merge-title" : table.isSeriesNumberInBody(col, row) ? `${col}-series-` + cellType : table.isListTable() && !table.transpose || table.isPivotTable() && table.internalProps.layoutMap.indicatorsAsCol ? col + cellType : row + cellType,
92
+ cacheStyle = (null == rawRecord ? void 0 : rawRecord.vTableMerge) ? table.bodyMergeTitleCache.get(cacheKey) : layoutMap.isBottomFrozenRow(row) ? table.bodyBottomStyleCache.get(cacheKey) : table.bodyStyleCache.get(cacheKey),
93
+ cacheStyle) return customCellStyle ? (0, custom_cell_style_1.mergeStyle)(cacheStyle, customCellStyle) : cacheStyle;
94
+ const column = layoutMap.getBody(col, row), styleClass = table.internalProps.bodyHelper.getStyleClass(table.getCellType(col, row)), style = null == column ? void 0 : column.style;
95
+ return cacheStyle = columnStyleContents.of(style, (null == rawRecord ? void 0 : rawRecord.vTableMerge) && table.theme.groupTitleStyle ? table.theme.groupTitleStyle : layoutMap.isBottomFrozenRow(row) && table.theme.bottomFrozenStyle ? table.theme.bottomFrozenStyle : layoutMap.isRightFrozenColumn(col) && table.theme.rightFrozenStyle ? table.theme.rightFrozenStyle : table.theme.bodyStyle, {
96
+ col: col,
97
+ row: row,
98
+ table: table,
99
+ value: table.getCellValue(col, row),
100
+ dataValue: table.getCellOriginValue(col, row),
101
+ cellHeaderPaths: table.getCellHeaderPaths(col, row)
102
+ }, styleClass, table.options.autoWrapText, table.theme), bgColorFunc && (cacheStyle = (0,
103
+ custom_cell_style_1.mergeStyle)(cacheStyle, {
104
+ bgColor: bgColorFunc
105
+ })), (0, vutils_1.isFunction)(style) || (layoutMap.isBottomFrozenRow(row) ? table.bodyBottomStyleCache.set(cacheKey, cacheStyle) : table.bodyStyleCache.set(cacheKey, cacheStyle)),
106
+ customCellStyle ? (0, custom_cell_style_1.mergeStyle)(cacheStyle, customCellStyle) : cacheStyle;
107
+ }
108
+
109
+ exports.getCellStyle = getCellStyle;
110
+ //# sourceMappingURL=style-helper.js.map