e-virt-table 0.0.3

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 (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/index.cjs.js +14 -0
  4. package/dist/index.cjs.js.map +1 -0
  5. package/dist/index.es.js +5422 -0
  6. package/dist/index.es.js.map +1 -0
  7. package/dist/index.umd.js +14 -0
  8. package/dist/index.umd.js.map +1 -0
  9. package/dist/lib/Autofill.d.ts +20 -0
  10. package/dist/lib/Autofill.js +185 -0
  11. package/dist/lib/Autofill.js.map +1 -0
  12. package/dist/lib/BaseCell.d.ts +22 -0
  13. package/dist/lib/BaseCell.js +111 -0
  14. package/dist/lib/BaseCell.js.map +1 -0
  15. package/dist/lib/Body.d.ts +29 -0
  16. package/dist/lib/Body.js +382 -0
  17. package/dist/lib/Body.js.map +1 -0
  18. package/dist/lib/Cell.d.ts +101 -0
  19. package/dist/lib/Cell.js +943 -0
  20. package/dist/lib/Cell.js.map +1 -0
  21. package/dist/lib/CellHeader.d.ts +64 -0
  22. package/dist/lib/CellHeader.js +355 -0
  23. package/dist/lib/CellHeader.js.map +1 -0
  24. package/dist/lib/Config.d.ts +106 -0
  25. package/dist/lib/Config.js +617 -0
  26. package/dist/lib/Config.js.map +1 -0
  27. package/dist/lib/Context.d.ts +123 -0
  28. package/dist/lib/Context.js +419 -0
  29. package/dist/lib/Context.js.map +1 -0
  30. package/dist/lib/Database.d.ts +228 -0
  31. package/dist/lib/Database.js +931 -0
  32. package/dist/lib/Database.js.map +1 -0
  33. package/dist/lib/EVirtTable.d.ts +61 -0
  34. package/dist/lib/EVirtTable.js +321 -0
  35. package/dist/lib/EVirtTable.js.map +1 -0
  36. package/dist/lib/Editor.d.ts +16 -0
  37. package/dist/lib/Editor.js +251 -0
  38. package/dist/lib/Editor.js.map +1 -0
  39. package/dist/lib/Empty.d.ts +7 -0
  40. package/dist/lib/Empty.js +45 -0
  41. package/dist/lib/Empty.js.map +1 -0
  42. package/dist/lib/EventBrowser.d.ts +17 -0
  43. package/dist/lib/EventBrowser.js +79 -0
  44. package/dist/lib/EventBrowser.js.map +1 -0
  45. package/dist/lib/EventBus.d.ts +12 -0
  46. package/dist/lib/EventBus.js +58 -0
  47. package/dist/lib/EventBus.js.map +1 -0
  48. package/dist/lib/EventTable.d.ts +26 -0
  49. package/dist/lib/EventTable.js +358 -0
  50. package/dist/lib/EventTable.js.map +1 -0
  51. package/dist/lib/Footer.d.ts +17 -0
  52. package/dist/lib/Footer.js +138 -0
  53. package/dist/lib/Footer.js.map +1 -0
  54. package/dist/lib/Header.d.ts +37 -0
  55. package/dist/lib/Header.js +482 -0
  56. package/dist/lib/Header.js.map +1 -0
  57. package/dist/lib/History.d.ts +27 -0
  58. package/dist/lib/History.js +106 -0
  59. package/dist/lib/History.js.map +1 -0
  60. package/dist/lib/Icons.d.ts +15 -0
  61. package/dist/lib/Icons.js +145 -0
  62. package/dist/lib/Icons.js.map +1 -0
  63. package/dist/lib/Overlayer.d.ts +10 -0
  64. package/dist/lib/Overlayer.js +267 -0
  65. package/dist/lib/Overlayer.js.map +1 -0
  66. package/dist/lib/Paint.d.ts +65 -0
  67. package/dist/lib/Paint.js +223 -0
  68. package/dist/lib/Paint.js.map +1 -0
  69. package/dist/lib/Row.d.ts +22 -0
  70. package/dist/lib/Row.js +125 -0
  71. package/dist/lib/Row.js.map +1 -0
  72. package/dist/lib/Scroller.d.ts +20 -0
  73. package/dist/lib/Scroller.js +448 -0
  74. package/dist/lib/Scroller.js.map +1 -0
  75. package/dist/lib/Selector.d.ts +38 -0
  76. package/dist/lib/Selector.js +532 -0
  77. package/dist/lib/Selector.js.map +1 -0
  78. package/dist/lib/Tooltip.d.ts +13 -0
  79. package/dist/lib/Tooltip.js +204 -0
  80. package/dist/lib/Tooltip.js.map +1 -0
  81. package/dist/lib/index.d.ts +3 -0
  82. package/dist/lib/index.js +4 -0
  83. package/dist/lib/index.js.map +1 -0
  84. package/dist/lib/types.d.ts +160 -0
  85. package/dist/lib/types.js +2 -0
  86. package/dist/lib/types.js.map +1 -0
  87. package/dist/lib/util.d.ts +15 -0
  88. package/dist/lib/util.js +113 -0
  89. package/dist/lib/util.js.map +1 -0
  90. package/package.json +37 -0
@@ -0,0 +1,358 @@
1
+ import Cell from "./Cell";
2
+ import CellHeader from "./CellHeader";
3
+ export default class EventTable {
4
+ constructor(ctx) {
5
+ Object.defineProperty(this, "ctx", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: void 0
10
+ });
11
+ Object.defineProperty(this, "visibleHoverCell", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "resizeObserver", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ this.ctx = ctx;
24
+ this.init();
25
+ }
26
+ init() {
27
+ // 监听窗口大小变化
28
+ this.resizeObserver = new ResizeObserver(() => {
29
+ this.ctx.emit("resetHeader");
30
+ this.ctx.emit("resizeObserver");
31
+ });
32
+ if (this.ctx.target.parentElement) {
33
+ this.resizeObserver.observe(this.ctx.target);
34
+ }
35
+ // 按下事件
36
+ this.ctx.on("mousedown", (e) => {
37
+ // 左边点击
38
+ if (e.button !== 0) {
39
+ return;
40
+ }
41
+ // 是否忙碌,进行其他操作
42
+ if (this.isBusy(e)) {
43
+ return;
44
+ }
45
+ const y = e.offsetY;
46
+ const x = e.offsetX;
47
+ // header
48
+ const renderCellHeaders = this.ctx.header.renderCellHeaders;
49
+ for (const cell of renderCellHeaders) {
50
+ const drawX = cell.getDrawX();
51
+ const drawY = cell.getDrawY();
52
+ if (x > drawX &&
53
+ x < drawX + cell.width &&
54
+ y > drawY &&
55
+ y < drawY + cell.height) {
56
+ this.ctx.focusCellHeader = cell;
57
+ this.ctx.emit("cellHeaderMousedown", cell, e);
58
+ return; // 找到后直接返回
59
+ }
60
+ }
61
+ // body
62
+ const renderRows = this.ctx.body.renderRows;
63
+ for (const row of renderRows) {
64
+ // 优先处理固定列
65
+ const cells = row.fixedCells.concat(row.noFixedCells);
66
+ for (const cell of cells) {
67
+ const drawX = cell.getDrawX();
68
+ const drawY = cell.getDrawY();
69
+ if (x > drawX &&
70
+ x < drawX + cell.width &&
71
+ y > drawY &&
72
+ y < drawY + cell.height) {
73
+ this.ctx.setFocusCell(cell);
74
+ this.ctx.emit("cellMousedown", cell, e);
75
+ return; // 找到后直接返回
76
+ }
77
+ }
78
+ }
79
+ });
80
+ this.ctx.on("click", (e) => {
81
+ // 左边点击
82
+ if (e.button !== 0) {
83
+ return;
84
+ }
85
+ // 是否忙碌,进行其他操作
86
+ if (this.isBusy(e)) {
87
+ return;
88
+ }
89
+ const y = e.offsetY;
90
+ const x = e.offsetX;
91
+ // header
92
+ const renderCellHeaders = this.ctx.header.renderCellHeaders;
93
+ for (const cell of renderCellHeaders) {
94
+ const drawX = cell.getDrawX();
95
+ const drawY = cell.getDrawY();
96
+ if (x > drawX &&
97
+ x < drawX + cell.width &&
98
+ y > drawY &&
99
+ y < drawY + cell.height) {
100
+ this.ctx.clickCellHeader = cell;
101
+ this.ctx.emit("cellHeaderClick", cell, e);
102
+ // selection事件
103
+ this.selectionClick(cell);
104
+ return; // 找到后直接返回
105
+ }
106
+ }
107
+ // body
108
+ const renderRows = this.ctx.body.renderRows;
109
+ for (const row of renderRows) {
110
+ // 优先处理固定列
111
+ const cells = row.fixedCells.concat(row.noFixedCells);
112
+ for (const cell of cells) {
113
+ const drawX = cell.getDrawX();
114
+ const drawY = cell.getDrawY();
115
+ if (x > drawX &&
116
+ x < drawX + cell.width &&
117
+ y > drawY &&
118
+ y < drawY + cell.height) {
119
+ this.ctx.clickCell = cell;
120
+ this.ctx.emit("cellClick", cell, e);
121
+ // selection事件
122
+ this.selectionClick(cell);
123
+ // 树事件
124
+ this.treeClick(cell);
125
+ return; // 找到后直接返回
126
+ }
127
+ }
128
+ }
129
+ });
130
+ this.ctx.on("mousemove", (e) => {
131
+ // 是否忙碌,进行其他操作
132
+ if (this.isBusy(e)) {
133
+ return;
134
+ }
135
+ const y = e.offsetY;
136
+ const x = e.offsetX;
137
+ // header
138
+ const renderCellHeaders = this.ctx.header.renderCellHeaders;
139
+ for (const cell of renderCellHeaders) {
140
+ const drawX = cell.getDrawX();
141
+ const drawY = cell.getDrawY();
142
+ if (x > drawX &&
143
+ x < drawX + cell.width &&
144
+ y > drawY &&
145
+ y < drawY + cell.height) {
146
+ this.ctx.emit("cellHeaderMouseenter", cell, e);
147
+ // 移出事件
148
+ if (this.ctx.hoverCellHeader && this.ctx.hoverCellHeader !== cell) {
149
+ this.ctx.emit("cellHeaderMouseleave", this.ctx.hoverCellHeader, e);
150
+ }
151
+ // selection头部事件
152
+ this.imageEnterAndLeave(cell, e);
153
+ if (this.ctx.hoverCellHeader === cell) {
154
+ return;
155
+ }
156
+ this.ctx.hoverCellHeader = cell;
157
+ this.ctx.emit("cellHeaderHoverChange", cell);
158
+ return; // 找到后直接返回
159
+ }
160
+ }
161
+ // body
162
+ const renderRows = this.ctx.body.renderRows;
163
+ for (const row of renderRows) {
164
+ // 优先处理固定列
165
+ const cells = row.fixedCells.concat(row.noFixedCells);
166
+ for (const cell of cells) {
167
+ const layerX = cell.getDrawX();
168
+ const layerY = cell.getDrawY();
169
+ // 因为可能有合并单元格,所以这里要判断是可视区域
170
+ if (x > layerX &&
171
+ x < layerX + cell.visibleWidth &&
172
+ y > layerY &&
173
+ y < layerY + cell.visibleHeight) {
174
+ // selection移入移除事件
175
+ this.imageEnterAndLeave(cell, e);
176
+ // this.ctx.emit("visibleCellHoverChange", cell, e);
177
+ if (this.visibleHoverCell !== cell) {
178
+ this.ctx.emit("visibleCellMouseleave", cell, e);
179
+ this.visibleHoverCell = cell;
180
+ this.ctx.emit("visibleCellHoverChange", cell, e);
181
+ }
182
+ }
183
+ if (x > layerX &&
184
+ x < layerX + cell.width &&
185
+ y > layerY &&
186
+ y < layerY + cell.height) {
187
+ this.ctx.emit("cellMouseenter", cell, e);
188
+ // 移出事件
189
+ if (this.ctx.hoverCell && this.ctx.hoverCell !== cell) {
190
+ this.ctx.emit("cellMouseleave", this.ctx.hoverCell, e);
191
+ }
192
+ if (this.ctx.hoverCell === cell)
193
+ return;
194
+ if (this.ctx.hoverCell?.rowKey !== cell.rowKey) {
195
+ this.ctx.hoverCell = cell;
196
+ this.ctx.hoverRow = this.ctx.body.renderRows[cell.rowIndex];
197
+ this.ctx.emit("rowHoverChange", this.ctx.hoverRow, cell, e);
198
+ this.ctx.emit("draw");
199
+ }
200
+ this.ctx.hoverCell = cell;
201
+ this.ctx.emit("cellHoverChange", cell, e);
202
+ return; // 找到后直接返回
203
+ }
204
+ }
205
+ }
206
+ });
207
+ }
208
+ /**
209
+ *选中点击
210
+ * @param cell
211
+ */
212
+ selectionClick(cell) {
213
+ // 鼠标移动到图标上会变成pointer,所以这里判断是否是pointer就能判断出是图标点击的
214
+ const isSelection = ["selection", "index-selection"].includes(cell.type) &&
215
+ this.ctx.isPointer;
216
+ if (!isSelection) {
217
+ return;
218
+ }
219
+ // 点击头部
220
+ if (cell instanceof CellHeader) {
221
+ if (cell.drawImageName === "checkbox-uncheck" ||
222
+ cell.drawImageName === "checkbox-indeterminate") {
223
+ this.ctx.database.toggleAllSelection();
224
+ }
225
+ else if (cell.drawImageName === "checkbox-check") {
226
+ this.ctx.database.clearSelection();
227
+ }
228
+ }
229
+ else {
230
+ // 点击body
231
+ // 是否可点击
232
+ const selectable = this.ctx.database.getRowSelectable(cell.rowKey);
233
+ if (!selectable) {
234
+ return;
235
+ }
236
+ this.ctx.database.toggleRowSelection(cell.rowKey);
237
+ }
238
+ }
239
+ /**
240
+ * 树点击
241
+ * @param cell
242
+ */
243
+ treeClick(cell) {
244
+ // 鼠标移动到图标上会变成pointer,所以这里判断是否是pointer就能判断出是图标点击的
245
+ if (cell.type === "tree" && this.ctx.isPointer) {
246
+ const row = this.ctx.database.getRowForRowKey(cell.rowKey);
247
+ const { expand = false, expandLazy = false } = row || {};
248
+ const { EXPAND_LAZY, EXPAND_LAZY_METHOD } = this.ctx.config;
249
+ // 懒加载且有懒加载方法,不是展开的不是已经加载过的
250
+ if (EXPAND_LAZY && EXPAND_LAZY_METHOD && !expand && !expandLazy) {
251
+ if (typeof EXPAND_LAZY_METHOD === "function") {
252
+ this.ctx.database.expandLoading(cell.rowKey, true);
253
+ const expandLazyMethod = EXPAND_LAZY_METHOD;
254
+ expandLazyMethod({
255
+ row: cell.row,
256
+ rowIndex: cell.rowIndex,
257
+ colIndex: cell.colIndex,
258
+ column: cell.column,
259
+ value: cell.getValue(),
260
+ })
261
+ .then((res) => {
262
+ this.ctx.database.setExpandChildren(cell.rowKey, res);
263
+ this.ctx.database.expandLoading(cell.rowKey, false);
264
+ })
265
+ .catch((err) => {
266
+ this.ctx.database.expandLoading(cell.rowKey, false);
267
+ console.error(err);
268
+ });
269
+ }
270
+ // 懒加载
271
+ }
272
+ else {
273
+ const isExpand = this.ctx.database.getIsExpand(cell.rowKey);
274
+ this.ctx.database.expandItem(cell.rowKey, !isExpand);
275
+ this.ctx.emit("expandChange");
276
+ }
277
+ }
278
+ }
279
+ /**
280
+ * 图标进入和离开事件,包括选中,展开,提示图标等
281
+ * @param cell
282
+ * @param e
283
+ */
284
+ imageEnterAndLeave(cell, e) {
285
+ const y = e.offsetY;
286
+ const x = e.offsetX;
287
+ if (x > cell.drawImageX &&
288
+ x < cell.drawImageX + cell.drawImageWidth &&
289
+ y > cell.drawImageY &&
290
+ y < cell.drawImageY + cell.drawImageHeight) {
291
+ this.ctx.target.style.cursor = "pointer";
292
+ this.ctx.isPointer = true;
293
+ // body cell 选中图标
294
+ if (cell instanceof Cell &&
295
+ ["selection", "index-selection"].includes(cell.type)) {
296
+ // body cell 需要处理是否可选
297
+ const selectable = this.ctx.database.getRowSelectable(cell.rowKey);
298
+ if (!selectable) {
299
+ this.ctx.target.style.cursor = "not-allowed";
300
+ }
301
+ }
302
+ }
303
+ else {
304
+ this.ctx.isPointer = false;
305
+ if (this.ctx.target.style.cursor === "pointer") {
306
+ this.ctx.target.style.cursor = "default";
307
+ }
308
+ }
309
+ }
310
+ isBusy(e) {
311
+ const y = e.offsetY;
312
+ const x = e.offsetX;
313
+ if (!(e.target instanceof HTMLCanvasElement)) {
314
+ return true;
315
+ }
316
+ if (!this.ctx.isTarget(e.target)) {
317
+ return true;
318
+ }
319
+ // 行调整大小中不处理
320
+ if (this.ctx.target.style.cursor === "row-resize") {
321
+ return true;
322
+ }
323
+ // 列调整大小中不处理
324
+ if (this.ctx.target.style.cursor === "col-resize") {
325
+ return true;
326
+ }
327
+ // 列调整大小中不处理
328
+ if (this.ctx.columnResizing) {
329
+ return true;
330
+ }
331
+ // 行调整大小中不处理
332
+ if (this.ctx.rowResizing) {
333
+ return true;
334
+ }
335
+ const { SCROLLER_TRACK_SIZE } = this.ctx.config;
336
+ // 滚动条移动不处理
337
+ if (this.ctx.scrollerMove) {
338
+ return true;
339
+ }
340
+ // 滚动条悬浮不处理
341
+ if (this.ctx.scrollerFocus) {
342
+ return true;
343
+ }
344
+ // 点击滚动条不处理
345
+ if (y > this.ctx.target.height - SCROLLER_TRACK_SIZE) {
346
+ return true;
347
+ }
348
+ // 点击滚动条不处理
349
+ if (x > this.ctx.target.width - SCROLLER_TRACK_SIZE) {
350
+ return true;
351
+ }
352
+ return false;
353
+ }
354
+ destroy() {
355
+ this.resizeObserver.unobserve(this.ctx.target);
356
+ }
357
+ }
358
+ //# sourceMappingURL=EventTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventTable.js","sourceRoot":"","sources":["../../src/EventTable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import Context from "./Context";
2
+ export default class Footer {
3
+ private ctx;
4
+ private renderRows;
5
+ private data;
6
+ private x;
7
+ private y;
8
+ private width;
9
+ private height;
10
+ private visibleWidth;
11
+ private visibleHeight;
12
+ constructor(ctx: Context);
13
+ private init;
14
+ private drawFiexShadow;
15
+ update(): void;
16
+ draw(): void;
17
+ }
@@ -0,0 +1,138 @@
1
+ import Row from "./Row";
2
+ export default class Footer {
3
+ constructor(ctx) {
4
+ Object.defineProperty(this, "ctx", {
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true,
8
+ value: void 0
9
+ });
10
+ Object.defineProperty(this, "renderRows", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: []
15
+ });
16
+ Object.defineProperty(this, "data", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: []
21
+ });
22
+ Object.defineProperty(this, "x", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: 0
27
+ });
28
+ Object.defineProperty(this, "y", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: 0
33
+ });
34
+ Object.defineProperty(this, "width", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: 0
39
+ });
40
+ Object.defineProperty(this, "height", {
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true,
44
+ value: 0
45
+ });
46
+ Object.defineProperty(this, "visibleWidth", {
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true,
50
+ value: 0
51
+ });
52
+ Object.defineProperty(this, "visibleHeight", {
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true,
56
+ value: 0
57
+ });
58
+ this.ctx = ctx;
59
+ this.init();
60
+ }
61
+ init() {
62
+ this.data = this.ctx.database.getFooterData();
63
+ const { header, body, config: { CELL_FOOTER_HEIGHT, FOOTER_FIXED, SCROLLER_TRACK_SIZE }, } = this.ctx;
64
+ // 更新宽度
65
+ this.width = header.width;
66
+ this.visibleWidth = header.visibleWidth;
67
+ // 更新高度
68
+ this.height = this.data.reduce((sum) => {
69
+ return sum + CELL_FOOTER_HEIGHT;
70
+ }, 0);
71
+ // 可视区高度
72
+ this.visibleHeight = this.height;
73
+ if (FOOTER_FIXED) {
74
+ this.y = this.ctx.target.height - this.height - SCROLLER_TRACK_SIZE;
75
+ }
76
+ else {
77
+ this.y = body.y + body.height;
78
+ }
79
+ this.ctx.footer.x = this.x;
80
+ this.ctx.footer.y = this.y;
81
+ this.ctx.footer.height = this.height;
82
+ this.ctx.footer.width = this.width;
83
+ this.ctx.footer.visibleWidth = this.visibleWidth;
84
+ this.ctx.footer.visibleHeight = this.visibleHeight;
85
+ }
86
+ drawFiexShadow() {
87
+ const { fixedLeftWidth, fixedRightWidth, scrollX, header, target, config: { HEADER_BG_COLOR, SCROLLER_TRACK_SIZE }, } = this.ctx;
88
+ let y = this.y;
89
+ // 不是footer固定时
90
+ if (!this.ctx.config.FOOTER_FIXED) {
91
+ y = this.y - this.ctx.scrollY;
92
+ }
93
+ if (scrollX > 0 && fixedLeftWidth !== 0) {
94
+ this.ctx.paint.drawShadow(this.x, y, fixedLeftWidth, this.height, {
95
+ fillColor: HEADER_BG_COLOR,
96
+ side: "right",
97
+ shadowWidth: 4,
98
+ colorStart: "rgba(0,0,0,0.1)",
99
+ colorEnd: "rgba(0,0,0,0)",
100
+ });
101
+ }
102
+ // 右边阴影
103
+ if (scrollX < Math.floor(header.width - header.visibleWidth - 1) &&
104
+ fixedRightWidth !== SCROLLER_TRACK_SIZE) {
105
+ const x = header.width - (this.x + this.width) + target.width - fixedRightWidth;
106
+ this.ctx.paint.drawShadow(x + 1, y, fixedRightWidth, this.height, {
107
+ fillColor: HEADER_BG_COLOR,
108
+ side: "left",
109
+ shadowWidth: 4,
110
+ colorStart: "rgba(0,0,0,0)",
111
+ colorEnd: "rgba(0,0,0,0.1)",
112
+ });
113
+ }
114
+ }
115
+ update() {
116
+ this.init();
117
+ const { CELL_FOOTER_HEIGHT } = this.ctx.config;
118
+ let everyOffsetY = this.y;
119
+ const rows = [];
120
+ this.data.forEach((data, index) => {
121
+ const row = new Row(this.ctx, index, 0, everyOffsetY, this.width, CELL_FOOTER_HEIGHT, data, "footer");
122
+ everyOffsetY += CELL_FOOTER_HEIGHT;
123
+ rows.push(row);
124
+ });
125
+ this.renderRows = rows;
126
+ this.ctx.footer.renderRows = this.renderRows;
127
+ }
128
+ draw() {
129
+ this.renderRows.forEach((row) => {
130
+ row.drawCenter();
131
+ });
132
+ this.drawFiexShadow();
133
+ this.renderRows.forEach((row) => {
134
+ row.drawFixed();
135
+ });
136
+ }
137
+ }
138
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/Footer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import Context from "./Context";
2
+ export default class Header {
3
+ private ctx;
4
+ private x;
5
+ private y;
6
+ private width;
7
+ private height;
8
+ private resizeTarget;
9
+ private resizeNum;
10
+ private isResizing;
11
+ private offsetX;
12
+ private resizeDiff;
13
+ private columnIndex;
14
+ private isMouseDown;
15
+ private columns;
16
+ private visibleLeafColumns;
17
+ private visibleHeight;
18
+ private visibleWidth;
19
+ private allCellHeaders;
20
+ private leafCellHeaders;
21
+ private renderLeafCellHeaders;
22
+ private fixedLeftCellHeaders;
23
+ private centerCellHeaders;
24
+ private fixedRightCellHeaders;
25
+ private renderCenterCellHeaders;
26
+ private renderFixedCellHeaders;
27
+ constructor(ctx: Context);
28
+ init(): void;
29
+ private initResizeColumn;
30
+ private resizeColumn;
31
+ resizeAllColumn(fellWidth: number): void;
32
+ private render;
33
+ private drawTipLine;
34
+ private drawFiexShadow;
35
+ update(): void;
36
+ draw(): void;
37
+ }