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,448 @@
1
+ class Scrollbar {
2
+ constructor(ctx, type) {
3
+ Object.defineProperty(this, "ctx", {
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true,
7
+ value: void 0
8
+ });
9
+ Object.defineProperty(this, "type", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: void 0
14
+ });
15
+ Object.defineProperty(this, "isFocus", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: false
20
+ });
21
+ Object.defineProperty(this, "trackX", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: 0
26
+ });
27
+ Object.defineProperty(this, "trackY", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: 0
32
+ });
33
+ Object.defineProperty(this, "trackWidth", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: 0
38
+ });
39
+ Object.defineProperty(this, "trackHeight", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: 0
44
+ });
45
+ Object.defineProperty(this, "splitPoints", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: []
50
+ }); //分割线
51
+ Object.defineProperty(this, "barX", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: 0
56
+ });
57
+ Object.defineProperty(this, "barY", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: 0
62
+ });
63
+ Object.defineProperty(this, "barWidth", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: 0
68
+ });
69
+ Object.defineProperty(this, "barHeight", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: 0
74
+ });
75
+ Object.defineProperty(this, "distance", {
76
+ enumerable: true,
77
+ configurable: true,
78
+ writable: true,
79
+ value: 0
80
+ }); // 滚动条的长度
81
+ Object.defineProperty(this, "visibleDistance", {
82
+ enumerable: true,
83
+ configurable: true,
84
+ writable: true,
85
+ value: 0
86
+ }); //可见区域的长度
87
+ Object.defineProperty(this, "offsetX", {
88
+ enumerable: true,
89
+ configurable: true,
90
+ writable: true,
91
+ value: 0
92
+ });
93
+ Object.defineProperty(this, "offsetY", {
94
+ enumerable: true,
95
+ configurable: true,
96
+ writable: true,
97
+ value: 0
98
+ });
99
+ Object.defineProperty(this, "dragStart", {
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true,
103
+ value: 0
104
+ }); // 拖拽开始的位置
105
+ Object.defineProperty(this, "isDragging", {
106
+ enumerable: true,
107
+ configurable: true,
108
+ writable: true,
109
+ value: false
110
+ });
111
+ Object.defineProperty(this, "scroll", {
112
+ enumerable: true,
113
+ configurable: true,
114
+ writable: true,
115
+ value: 0
116
+ });
117
+ this.ctx = ctx;
118
+ this.type = type;
119
+ if (this.type === "vertical") {
120
+ this.scroll = this.ctx.scrollY;
121
+ }
122
+ else {
123
+ this.scroll = this.ctx.scrollX;
124
+ }
125
+ }
126
+ onWheel(e) {
127
+ this.updateScroll(e);
128
+ }
129
+ onMouseDown(e) {
130
+ const { offsetX, offsetY } = e;
131
+ if (offsetX == this.offsetX && offsetY == this.offsetY)
132
+ return;
133
+ if (this.isOnScrollbar(offsetX, offsetY)) {
134
+ this.offsetX = offsetX;
135
+ this.offsetY = offsetY;
136
+ this.isDragging = true;
137
+ this.ctx.scrollerMove = true; // 滚动条移动
138
+ this.isFocus = true;
139
+ this.dragStart = this.scroll;
140
+ }
141
+ else if (this.isOnTrack(offsetX, offsetY)) {
142
+ // 点击轨道滚动
143
+ let scroll = 0;
144
+ if (this.type === "vertical") {
145
+ // 滚动条位置=(鼠标位置-滚动条的高度/2-头部的高度)/(可见区域的长度-滚动条的高度)*滚动条的长度
146
+ // 滚动到中间所以减去滚动条的高度/2
147
+ const offset = offsetY - this.ctx.header.height - this.barHeight / 2;
148
+ scroll =
149
+ (offset / (this.visibleDistance - this.barHeight)) * this.distance;
150
+ }
151
+ else {
152
+ const offset = offsetX - this.barWidth / 2;
153
+ scroll =
154
+ (offset / (this.visibleDistance - this.barWidth)) * this.distance;
155
+ }
156
+ this.scroll = Math.max(0, Math.min(scroll, this.distance));
157
+ }
158
+ }
159
+ onMouseUp() {
160
+ this.isDragging = false;
161
+ this.isFocus = false;
162
+ this.offsetY = 0;
163
+ this.offsetX = 0;
164
+ }
165
+ onMouseMove(e) {
166
+ const { offsetX, offsetY } = e;
167
+ // 悬浮提示
168
+ if (this.isOnScrollbar(offsetX, offsetY) && e.target === this.ctx.target) {
169
+ this.isFocus = true;
170
+ }
171
+ else {
172
+ this.isFocus = false;
173
+ }
174
+ // 拖拽移动滚动条
175
+ if (offsetX == this.offsetX && offsetY == this.offsetY)
176
+ return;
177
+ let offset = 0;
178
+ if (this.type === "horizontal") {
179
+ offset = offsetX - this.offsetX;
180
+ }
181
+ else {
182
+ offset = offsetY - this.offsetY;
183
+ }
184
+ if (this.isDragging && offset !== 0) {
185
+ // scroll= 开始滚动条位置+(鼠标移动的距离/可见区域的长度)*滚动条的长度
186
+ let scroll = 0;
187
+ if (this.type === "vertical") {
188
+ scroll =
189
+ this.dragStart +
190
+ (offset / (this.visibleDistance - this.barHeight)) * this.distance;
191
+ }
192
+ else {
193
+ scroll =
194
+ this.dragStart +
195
+ (offset / (this.visibleDistance - this.barWidth)) * this.distance;
196
+ }
197
+ this.scroll = Math.max(0, Math.min(scroll, this.distance));
198
+ }
199
+ }
200
+ isPointInElement(pointX, pointY, elementX, elementY, elementWidth, elementHeight) {
201
+ return (pointX >= elementX &&
202
+ pointX <= elementX + elementWidth &&
203
+ pointY >= elementY &&
204
+ pointY <= elementY + elementHeight);
205
+ }
206
+ isOnScrollbar(x, y) {
207
+ return this.isPointInElement(x, y, this.barX, this.barY, this.barWidth, this.barHeight);
208
+ }
209
+ isOnTrack(x, y) {
210
+ return this.isPointInElement(x, y, this.trackX, this.trackY, this.trackWidth, this.trackHeight);
211
+ }
212
+ updateScroll(e) {
213
+ e.preventDefault();
214
+ const deltaX = e.deltaX;
215
+ const deltaY = e.deltaY;
216
+ if (this.type === "vertical" && e.shiftKey === false) {
217
+ this.scroll = Math.max(0, Math.min(this.scroll + deltaY, this.distance));
218
+ }
219
+ else if (this.type === "horizontal") {
220
+ if (e.shiftKey) {
221
+ this.scroll = Math.max(0, Math.min(this.scroll + deltaY, this.distance));
222
+ }
223
+ else {
224
+ this.scroll = Math.max(0, Math.min(this.scroll + deltaX, this.distance));
225
+ }
226
+ }
227
+ }
228
+ updatedSize() {
229
+ const { body, header, config: { SCROLLER_TRACK_SIZE = 0, SCROLLER_SIZE = 0 }, } = this.ctx;
230
+ const visibleWidth = this.ctx.target.width + 1;
231
+ const visibleHeight = this.ctx.target.height;
232
+ const headerHeight = header.height;
233
+ const headerWidth = header.width;
234
+ const bodyHeight = body.height;
235
+ const footerHeight = this.ctx.footer.height;
236
+ if (this.type === "vertical") {
237
+ this.visibleDistance = visibleHeight - SCROLLER_TRACK_SIZE - headerHeight;
238
+ this.distance = bodyHeight - this.visibleDistance + footerHeight;
239
+ this.trackX = visibleWidth - SCROLLER_TRACK_SIZE;
240
+ this.trackY = 0;
241
+ // 分割线
242
+ this.splitPoints = [
243
+ this.trackX,
244
+ headerHeight,
245
+ this.trackX + SCROLLER_TRACK_SIZE,
246
+ headerHeight,
247
+ ];
248
+ this.trackWidth = SCROLLER_TRACK_SIZE;
249
+ this.trackHeight = visibleHeight;
250
+ // 滚动条的X位置=轨道的X位置+(轨道的宽度-滚动条的宽度)/2
251
+ this.barX = this.trackX + (SCROLLER_TRACK_SIZE - SCROLLER_SIZE) / 2;
252
+ this.barWidth = SCROLLER_SIZE;
253
+ const ratio = this.distance ? this.visibleDistance / bodyHeight : 0;
254
+ let _barHeight = Math.floor(ratio * this.visibleDistance);
255
+ // 最小30,超出可见区域则隐藏
256
+ if (_barHeight < 30) {
257
+ _barHeight = 30;
258
+ }
259
+ else if (_barHeight > this.visibleDistance) {
260
+ _barHeight = 0;
261
+ }
262
+ this.barHeight = _barHeight;
263
+ this.barY =
264
+ headerHeight +
265
+ (this.scroll / this.distance) * (this.visibleDistance - this.barHeight);
266
+ // 范围限制
267
+ this.scroll = Math.max(0, Math.min(this.scroll, this.distance));
268
+ }
269
+ else {
270
+ this.visibleDistance = visibleWidth - SCROLLER_TRACK_SIZE;
271
+ this.distance = headerWidth - this.visibleDistance;
272
+ // 分割线
273
+ this.splitPoints = [
274
+ visibleWidth - SCROLLER_TRACK_SIZE,
275
+ visibleHeight - SCROLLER_TRACK_SIZE,
276
+ visibleWidth - SCROLLER_TRACK_SIZE,
277
+ visibleHeight,
278
+ ];
279
+ this.trackX = 0;
280
+ this.trackY = visibleHeight - SCROLLER_TRACK_SIZE;
281
+ this.trackWidth = visibleWidth;
282
+ this.trackHeight = SCROLLER_TRACK_SIZE;
283
+ const ratio = this.distance ? this.visibleDistance / headerWidth : 0;
284
+ let _barWidth = Math.floor(ratio * this.visibleDistance);
285
+ this.barY = this.trackY + 0.5 + (SCROLLER_TRACK_SIZE - SCROLLER_SIZE) / 2;
286
+ // 最小30,超出可见区域则隐藏
287
+ if (_barWidth < 30) {
288
+ _barWidth = 30;
289
+ }
290
+ else if (_barWidth >= this.visibleDistance) {
291
+ _barWidth = 0;
292
+ }
293
+ this.barWidth = _barWidth;
294
+ this.barHeight = SCROLLER_SIZE;
295
+ this.barX =
296
+ (this.scroll / this.distance) * (this.visibleDistance - this.barWidth);
297
+ // 范围限制
298
+ this.scroll = Math.max(0, Math.min(this.scroll, this.distance));
299
+ }
300
+ }
301
+ draw() {
302
+ const { config: { SCROLLER_FOCUS_COLOR, SCROLLER_COLOR, BORDER_COLOR, SCROLLER_TRACK_COLOR, }, } = this.ctx;
303
+ this.updatedSize();
304
+ // 轨道
305
+ this.ctx.paint.drawRect(this.trackX, this.trackY, this.trackWidth, this.trackHeight, {
306
+ borderColor: BORDER_COLOR,
307
+ fillColor: SCROLLER_TRACK_COLOR,
308
+ });
309
+ // 滚动条
310
+ this.ctx.paint.drawRect(this.barX, this.barY, this.barWidth, this.barHeight, {
311
+ fillColor: this.isFocus || this.isDragging
312
+ ? SCROLLER_FOCUS_COLOR
313
+ : SCROLLER_COLOR,
314
+ radius: 4,
315
+ });
316
+ // 分割线范围外
317
+ if (this.splitPoints.length > 0) {
318
+ this.ctx.paint.drawLine(this.splitPoints, {
319
+ borderColor: BORDER_COLOR,
320
+ borderWidth: 1,
321
+ });
322
+ }
323
+ // 悬浮状态
324
+ this.ctx.scrollerFocus = this.isFocus;
325
+ }
326
+ }
327
+ export default class Scroller {
328
+ constructor(ctx) {
329
+ Object.defineProperty(this, "ctx", {
330
+ enumerable: true,
331
+ configurable: true,
332
+ writable: true,
333
+ value: void 0
334
+ });
335
+ Object.defineProperty(this, "verticalScrollbar", {
336
+ enumerable: true,
337
+ configurable: true,
338
+ writable: true,
339
+ value: void 0
340
+ });
341
+ Object.defineProperty(this, "horizontalScrollbar", {
342
+ enumerable: true,
343
+ configurable: true,
344
+ writable: true,
345
+ value: void 0
346
+ });
347
+ this.ctx = ctx;
348
+ this.verticalScrollbar = new Scrollbar(ctx, "vertical");
349
+ this.horizontalScrollbar = new Scrollbar(ctx, "horizontal");
350
+ this.ctx.on("wheel", (e) => this.onWheel(e));
351
+ this.ctx.on("mousedown", (e) => this.onMouseDown(e));
352
+ this.ctx.on("mousemove", (e) => this.onMouseMove(e));
353
+ this.ctx.on("mouseup", () => this.onMouseUp());
354
+ this.ctx.on("setScroll", (scrollX, scrollY) => {
355
+ this.setScroll(scrollX, scrollY);
356
+ });
357
+ this.ctx.on("setScrollX", (scrollX) => {
358
+ this.setScrollX(scrollX);
359
+ });
360
+ this.ctx.on("setScrollY", (scrollY) => {
361
+ this.setScrollY(scrollY);
362
+ });
363
+ }
364
+ onWheel(e) {
365
+ this.verticalScrollbar.onWheel(e);
366
+ this.horizontalScrollbar.onWheel(e);
367
+ this.draw();
368
+ }
369
+ onMouseDown(e) {
370
+ this.verticalScrollbar.onMouseDown(e);
371
+ this.horizontalScrollbar.onMouseDown(e);
372
+ this.draw();
373
+ }
374
+ onMouseMove(e) {
375
+ this.verticalScrollbar.onMouseMove(e);
376
+ this.horizontalScrollbar.onMouseMove(e);
377
+ this.draw();
378
+ }
379
+ onMouseUp() {
380
+ this.verticalScrollbar.onMouseUp();
381
+ this.horizontalScrollbar.onMouseUp();
382
+ this.ctx.scrollerMove = false;
383
+ }
384
+ draw() {
385
+ this.verticalScrollbar.draw();
386
+ this.horizontalScrollbar.draw();
387
+ const scrollX = Math.floor(this.horizontalScrollbar.scroll);
388
+ const scrollY = Math.floor(this.verticalScrollbar.scroll);
389
+ // 只有滚动条发生变化才触发绘制
390
+ if (scrollX !== this.ctx.scrollX || scrollY !== this.ctx.scrollY) {
391
+ this.ctx.scrollX = scrollX;
392
+ this.ctx.scrollY = scrollY;
393
+ this.ctx.emit("draw");
394
+ this.ctx.emit("onScroll", scrollX, scrollY);
395
+ if (scrollX !== this.ctx.scrollX) {
396
+ this.ctx.emit("onScrollX", scrollX);
397
+ }
398
+ if (scrollY !== this.ctx.scrollY) {
399
+ this.ctx.emit("onScrollY", scrollY);
400
+ }
401
+ }
402
+ }
403
+ setScroll(x, y) {
404
+ this.horizontalScrollbar.scroll = x;
405
+ this.verticalScrollbar.scroll = y;
406
+ this.ctx.emit("draw");
407
+ }
408
+ setScrollX(scrollX) {
409
+ this.horizontalScrollbar.scroll = scrollX;
410
+ this.ctx.emit("draw");
411
+ }
412
+ setScrollY(scrollY) {
413
+ this.verticalScrollbar.scroll = scrollY;
414
+ this.ctx.emit("draw");
415
+ }
416
+ scrollToColkey(key) {
417
+ const { header } = this.ctx;
418
+ const cell = header.leafCellHeaders.find((cell) => cell.key === key);
419
+ if (cell) {
420
+ // 移动到窗口中间/2
421
+ this.setScrollX(cell.x - header.visibleWidth / 2);
422
+ }
423
+ }
424
+ scrollToColIndex(colIndex) {
425
+ const { header } = this.ctx;
426
+ const cell = header.leafCellHeaders.find((cell) => cell.colIndex === colIndex);
427
+ if (cell) {
428
+ // 移动到窗口中间/2
429
+ if (cell.x > header.visibleWidth / 2) {
430
+ this.setScrollX(cell.x - header.visibleWidth / 2);
431
+ }
432
+ }
433
+ }
434
+ scrollToRowIndex(rowIndex) {
435
+ const { body, database } = this.ctx;
436
+ const { top } = database.getPositionForRowIndex(rowIndex);
437
+ if (top > body.visibleHeight) {
438
+ this.setScrollY(top - body.visibleHeight / 2);
439
+ }
440
+ }
441
+ scrollToRowKey(rowKey) {
442
+ const { body, database } = this.ctx;
443
+ const rowIndex = database.getRowIndexForRowKey(rowKey);
444
+ const { top } = database.getPositionForRowIndex(rowIndex);
445
+ this.setScrollY(top - body.visibleHeight / 2);
446
+ }
447
+ }
448
+ //# sourceMappingURL=Scroller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scroller.js","sourceRoot":"","sources":["../../src/Scroller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type Context from "./Context";
2
+ export default class Selector {
3
+ private isCut;
4
+ private isMultipleRow;
5
+ private ctx;
6
+ constructor(ctx: Context);
7
+ private init;
8
+ private setSelector;
9
+ private selectCols;
10
+ private selectAll;
11
+ private selectRows;
12
+ private mouseenter;
13
+ private click;
14
+ private clearCopyLine;
15
+ /**
16
+ * 获取选中单元格
17
+ * @param rowIndex
18
+ * @param colIndex
19
+ * @returns
20
+ */
21
+ private getCell;
22
+ /**
23
+ * 复制
24
+ * @returns
25
+ */
26
+ private copy;
27
+ private clearSelectedData;
28
+ private paste;
29
+ /**键盘上下左右切换
30
+ * @param dir
31
+ */
32
+ private moveFocus;
33
+ /**
34
+ * 调整滚动条位置,让焦点单元格始终出现在可视区域内
35
+ */
36
+ private adjustBoundaryPosition;
37
+ destroy(): void;
38
+ }