@visactor/vtable-plugins 1.20.2-alpha.0 → 1.20.2

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 (165) hide show
  1. package/cjs/add-row-column.d.ts +7 -6
  2. package/cjs/add-row-column.js +4 -29
  3. package/cjs/add-row-column.js.map +1 -1
  4. package/cjs/auto-fill/auto-fill-manager.js +7 -34
  5. package/cjs/auto-fill/auto-fill-manager.js.map +1 -1
  6. package/cjs/auto-fill/index.d.ts +6 -10
  7. package/cjs/auto-fill/index.js +5 -30
  8. package/cjs/auto-fill/index.js.map +1 -1
  9. package/cjs/auto-fill/rules.js +26 -11
  10. package/cjs/auto-fill/rules.js.map +1 -1
  11. package/cjs/auto-fill/utils/fill.d.ts +1 -1
  12. package/cjs/auto-fill/utils/fill.js +9 -9
  13. package/cjs/auto-fill/utils/fill.js.map +1 -1
  14. package/cjs/column-series.d.ts +4 -3
  15. package/cjs/column-series.js +4 -29
  16. package/cjs/column-series.js.map +1 -1
  17. package/cjs/context-menu.d.ts +6 -5
  18. package/cjs/context-menu.js +3 -28
  19. package/cjs/context-menu.js.map +1 -1
  20. package/cjs/contextmenu/handle-menu-helper.d.ts +19 -19
  21. package/cjs/contextmenu/handle-menu-helper.js.map +1 -1
  22. package/cjs/contextmenu/menu-manager.js.map +1 -1
  23. package/cjs/contextmenu/types.d.ts +1 -1
  24. package/cjs/contextmenu/types.js +2 -2
  25. package/cjs/contextmenu/types.js.map +1 -1
  26. package/cjs/excel-edit-cell-keyboard.d.ts +4 -4
  27. package/cjs/excel-edit-cell-keyboard.js +3 -28
  28. package/cjs/excel-edit-cell-keyboard.js.map +1 -1
  29. package/cjs/excel-import.d.ts +5 -5
  30. package/cjs/excel-import.js +3 -26
  31. package/cjs/excel-import.js.map +1 -1
  32. package/cjs/fillHandleUtils/autoFillHandle.d.ts +2 -2
  33. package/cjs/fillHandleUtils/autoFillHandle.js.map +1 -1
  34. package/cjs/fillHandleUtils/translateRowObj.d.ts +3 -3
  35. package/cjs/fillHandleUtils/translateRowObj.js.map +1 -1
  36. package/cjs/filter/condition-filter.d.ts +2 -2
  37. package/cjs/filter/condition-filter.js.map +1 -1
  38. package/cjs/filter/filter-engine.d.ts +6 -6
  39. package/cjs/filter/filter-engine.js.map +1 -1
  40. package/cjs/filter/filter-state-manager.d.ts +2 -2
  41. package/cjs/filter/filter-state-manager.js.map +1 -1
  42. package/cjs/filter/filter-toolbar.d.ts +4 -4
  43. package/cjs/filter/filter-toolbar.js.map +1 -1
  44. package/cjs/filter/filter.d.ts +4 -4
  45. package/cjs/filter/filter.js +7 -32
  46. package/cjs/filter/filter.js.map +1 -1
  47. package/cjs/filter/types.d.ts +4 -4
  48. package/cjs/filter/types.js.map +1 -1
  49. package/cjs/filter/value-filter.d.ts +2 -2
  50. package/cjs/filter/value-filter.js.map +1 -1
  51. package/cjs/focus-highlight.d.ts +2 -2
  52. package/cjs/focus-highlight.js.map +1 -1
  53. package/cjs/gantt-export-image.js +1 -1
  54. package/cjs/gantt-export-image.js.map +1 -1
  55. package/cjs/header-highlight.js +2 -2
  56. package/cjs/header-highlight.js.map +1 -1
  57. package/cjs/highlight-header-when-select-cell.d.ts +2 -2
  58. package/cjs/highlight-header-when-select-cell.js.map +1 -1
  59. package/cjs/paste-add-row-column.d.ts +5 -5
  60. package/cjs/paste-add-row-column.js +3 -28
  61. package/cjs/paste-add-row-column.js.map +1 -1
  62. package/cjs/rotate-table.d.ts +13 -5
  63. package/cjs/rotate-table.js +3 -28
  64. package/cjs/rotate-table.js.map +1 -1
  65. package/cjs/row-series.d.ts +2 -2
  66. package/cjs/row-series.js.map +1 -1
  67. package/cjs/table-carousel-animation.d.ts +2 -2
  68. package/cjs/table-carousel-animation.js.map +1 -1
  69. package/cjs/table-export/csv/index.d.ts +2 -4
  70. package/cjs/table-export/csv/index.js.map +1 -1
  71. package/cjs/table-export/util/type.d.ts +6 -6
  72. package/cjs/table-export/util/type.js.map +1 -1
  73. package/cjs/table-export.d.ts +2 -2
  74. package/cjs/table-export.js +4 -27
  75. package/cjs/table-export.js.map +1 -1
  76. package/cjs/table-series-number.d.ts +2 -2
  77. package/cjs/table-series-number.js +2 -3
  78. package/cjs/table-series-number.js.map +1 -1
  79. package/cjs/wps-fill-handle.d.ts +4 -4
  80. package/cjs/wps-fill-handle.js +4 -29
  81. package/cjs/wps-fill-handle.js.map +1 -1
  82. package/dist/vtable-plugins.js +280 -13600
  83. package/dist/vtable-plugins.min.js +5 -5
  84. package/es/add-row-column.d.ts +7 -6
  85. package/es/add-row-column.js +4 -4
  86. package/es/add-row-column.js.map +1 -1
  87. package/es/auto-fill/auto-fill-manager.js +7 -9
  88. package/es/auto-fill/auto-fill-manager.js.map +1 -1
  89. package/es/auto-fill/index.d.ts +6 -10
  90. package/es/auto-fill/index.js +5 -5
  91. package/es/auto-fill/index.js.map +1 -1
  92. package/es/auto-fill/rules.js +24 -9
  93. package/es/auto-fill/rules.js.map +1 -1
  94. package/es/auto-fill/utils/fill.d.ts +1 -1
  95. package/es/auto-fill/utils/fill.js +9 -9
  96. package/es/auto-fill/utils/fill.js.map +1 -1
  97. package/es/column-series.d.ts +4 -3
  98. package/es/column-series.js +4 -4
  99. package/es/column-series.js.map +1 -1
  100. package/es/context-menu.d.ts +6 -5
  101. package/es/context-menu.js +3 -3
  102. package/es/context-menu.js.map +1 -1
  103. package/es/contextmenu/handle-menu-helper.d.ts +19 -19
  104. package/es/contextmenu/handle-menu-helper.js.map +1 -1
  105. package/es/contextmenu/menu-manager.js.map +1 -1
  106. package/es/contextmenu/types.d.ts +1 -1
  107. package/es/contextmenu/types.js +2 -2
  108. package/es/contextmenu/types.js.map +1 -1
  109. package/es/excel-edit-cell-keyboard.d.ts +4 -4
  110. package/es/excel-edit-cell-keyboard.js +3 -3
  111. package/es/excel-edit-cell-keyboard.js.map +1 -1
  112. package/es/excel-import.d.ts +5 -5
  113. package/es/excel-import.js +2 -2
  114. package/es/excel-import.js.map +1 -1
  115. package/es/fillHandleUtils/autoFillHandle.d.ts +2 -2
  116. package/es/fillHandleUtils/autoFillHandle.js.map +1 -1
  117. package/es/fillHandleUtils/translateRowObj.d.ts +3 -3
  118. package/es/fillHandleUtils/translateRowObj.js.map +1 -1
  119. package/es/filter/condition-filter.d.ts +2 -2
  120. package/es/filter/condition-filter.js.map +1 -1
  121. package/es/filter/filter-engine.d.ts +6 -6
  122. package/es/filter/filter-engine.js.map +1 -1
  123. package/es/filter/filter-state-manager.d.ts +2 -2
  124. package/es/filter/filter-state-manager.js.map +1 -1
  125. package/es/filter/filter-toolbar.d.ts +4 -4
  126. package/es/filter/filter-toolbar.js.map +1 -1
  127. package/es/filter/filter.d.ts +4 -4
  128. package/es/filter/filter.js +7 -7
  129. package/es/filter/filter.js.map +1 -1
  130. package/es/filter/types.d.ts +4 -4
  131. package/es/filter/types.js.map +1 -1
  132. package/es/filter/value-filter.d.ts +2 -2
  133. package/es/filter/value-filter.js.map +1 -1
  134. package/es/focus-highlight.d.ts +2 -2
  135. package/es/focus-highlight.js.map +1 -1
  136. package/es/gantt-export-image.js +1 -1
  137. package/es/gantt-export-image.js.map +1 -1
  138. package/es/header-highlight.js +2 -2
  139. package/es/header-highlight.js.map +1 -1
  140. package/es/highlight-header-when-select-cell.d.ts +2 -2
  141. package/es/highlight-header-when-select-cell.js.map +1 -1
  142. package/es/paste-add-row-column.d.ts +5 -5
  143. package/es/paste-add-row-column.js +3 -3
  144. package/es/paste-add-row-column.js.map +1 -1
  145. package/es/rotate-table.d.ts +13 -5
  146. package/es/rotate-table.js +3 -3
  147. package/es/rotate-table.js.map +1 -1
  148. package/es/row-series.d.ts +2 -2
  149. package/es/row-series.js.map +1 -1
  150. package/es/table-carousel-animation.d.ts +2 -2
  151. package/es/table-carousel-animation.js.map +1 -1
  152. package/es/table-export/csv/index.d.ts +2 -4
  153. package/es/table-export/csv/index.js.map +1 -1
  154. package/es/table-export/util/type.d.ts +6 -6
  155. package/es/table-export/util/type.js.map +1 -1
  156. package/es/table-export.d.ts +2 -2
  157. package/es/table-export.js +3 -3
  158. package/es/table-export.js.map +1 -1
  159. package/es/table-series-number.d.ts +2 -2
  160. package/es/table-series-number.js +2 -3
  161. package/es/table-series-number.js.map +1 -1
  162. package/es/wps-fill-handle.d.ts +4 -4
  163. package/es/wps-fill-handle.js +4 -4
  164. package/es/wps-fill-handle.js.map +1 -1
  165. package/package.json +9 -8
@@ -1,19 +1,20 @@
1
1
  /// <reference types="node" />
2
- import * as VTable from '@visactor/vtable';
2
+ import type { ListTable, TYPES } from '@visactor/vtable';
3
+ import type { pluginsDefinition } from '@visactor/vtable';
3
4
  export interface AddRowColumnOptions {
4
5
  id?: string;
5
6
  addColumnEnable?: boolean;
6
7
  addRowEnable?: boolean;
7
- addColumnCallback?: (col: number, table: VTable.ListTable) => void;
8
- addRowCallback?: (row: number, table: VTable.ListTable) => void;
8
+ addColumnCallback?: (col: number, table: ListTable) => void;
9
+ addRowCallback?: (row: number, table: ListTable) => void;
9
10
  }
10
- export declare class AddRowColumnPlugin implements VTable.plugins.IVTablePlugin {
11
+ export declare class AddRowColumnPlugin implements pluginsDefinition.IVTablePlugin {
11
12
  id: string;
12
13
  name: string;
13
14
  runTime: ("mouseleave_table" | "mouseenter_cell" | "mouseleave_cell")[];
14
15
  pluginOptions: AddRowColumnOptions;
15
- table: VTable.ListTable;
16
- hoverCell: VTable.TYPES.CellAddressWithBound;
16
+ table: ListTable;
17
+ hoverCell: TYPES.CellAddressWithBound;
17
18
  hideAllTimeoutId_addColumn: NodeJS.Timeout;
18
19
  hideAllTimeoutId_addRow: NodeJS.Timeout;
19
20
  leftDotForAddColumn: HTMLElement;
@@ -1,35 +1,10 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
29
4
  value: !0
30
5
  }), exports.AddRowColumnPlugin = void 0;
31
6
 
32
- const VTable = __importStar(require("@visactor/vtable"));
7
+ const vtable_1 = require("@visactor/vtable");
33
8
 
34
9
  class AddRowColumnPlugin {
35
10
  constructor(pluginOptions = {
@@ -37,7 +12,7 @@ class AddRowColumnPlugin {
37
12
  addRowEnable: !0
38
13
  }) {
39
14
  var _a, _b, _c;
40
- this.id = "add-row-column", this.name = "Add Row Column", this.runTime = [ VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE ],
15
+ this.id = "add-row-column", this.name = "Add Row Column", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.MOUSEENTER_CELL, vtable_1.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, vtable_1.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE ],
41
16
  this.id = null !== (_a = pluginOptions.id) && void 0 !== _a ? _a : this.id, this.pluginOptions = pluginOptions,
42
17
  this.pluginOptions.addColumnEnable = null === (_b = this.pluginOptions.addColumnEnable) || void 0 === _b || _b,
43
18
  this.pluginOptions.addRowEnable = null === (_c = this.pluginOptions.addRowEnable) || void 0 === _c || _c,
@@ -46,7 +21,7 @@ class AddRowColumnPlugin {
46
21
  }
47
22
  run(...args) {
48
23
  const eventArgs = args[0], runTime = args[1], table = args[2];
49
- if (this.table = table, runTime === VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL) {
24
+ if (this.table = table, runTime === vtable_1.TABLE_EVENT_TYPE.MOUSEENTER_CELL) {
50
25
  clearTimeout(this.hideAllTimeoutId_addColumn), clearTimeout(this.hideAllTimeoutId_addRow);
51
26
  const canvasBounds = table.canvas.getBoundingClientRect(), cell = table.getCellAtRelativePosition(eventArgs.event.clientX - canvasBounds.left, eventArgs.event.clientY - canvasBounds.top);
52
27
  this.hoverCell = cell;
@@ -59,7 +34,7 @@ class AddRowColumnPlugin {
59
34
  const isHeader = table.isHeader(cell.col, cell.row);
60
35
  this.showDotForAddRow(cellRect.top + canvasBounds.top, canvasBounds.left - 6, cellRect.bottom + canvasBounds.top, !isHeader, !isHeader);
61
36
  }
62
- } else runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL || runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE && (this.pluginOptions.addColumnEnable && this.delayHideAllForAddColumn(),
37
+ } else runTime === vtable_1.TABLE_EVENT_TYPE.MOUSELEAVE_CELL || runTime === vtable_1.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE && (this.pluginOptions.addColumnEnable && this.delayHideAllForAddColumn(),
63
38
  this.pluginOptions.addRowEnable && this.delayHideAllForAddRow());
64
39
  }
65
40
  initAddColumnDomElement() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/add-row-column.ts"],"names":[],"mappings":"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","file":"add-row-column.js","sourcesContent":["import * as VTable from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface AddRowColumnOptions {\n id?: string;\n /**\n * 是否启用添加列\n */\n addColumnEnable?: boolean;\n /**\n * 是否启用添加行\n */\n addRowEnable?: boolean;\n /**\n * 添加列的回调函数\n */\n addColumnCallback?: (col: number, table: VTable.ListTable) => void;\n /**\n * 添加行的回调函数\n */\n addRowCallback?: (row: number, table: VTable.ListTable) => void;\n}\n/**\n * 添加行和列的插件\n * 该插件监听了table的MOUSEENTER_CELL,MOUSELEAVE_CELL,MOUSELEAVE_TABLE事件\n * 当鼠标hover到table的cell时,会显示添加行和列的dot和加号\n * 当鼠标离开table的cell时,会隐藏添加行和列的dot和加号\n */\nexport class AddRowColumnPlugin implements VTable.plugins.IVTablePlugin {\n id = `add-row-column`;\n name = 'Add Row Column';\n runTime = [\n VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL,\n VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE\n ];\n pluginOptions: AddRowColumnOptions;\n table: VTable.ListTable;\n hoverCell: VTable.TYPES.CellAddressWithBound;\n hideAllTimeoutId_addColumn: NodeJS.Timeout;\n hideAllTimeoutId_addRow: NodeJS.Timeout;\n leftDotForAddColumn: HTMLElement;\n rightDotForAddColumn: HTMLElement;\n addIconForAddColumn: HTMLElement;\n addLineForAddColumn: HTMLElement;\n topDotForAddRow: HTMLElement;\n bottomDotForAddRow: HTMLElement;\n addIconForAddRow: HTMLElement;\n addLineForAddRow: HTMLElement;\n\n constructor(\n pluginOptions: AddRowColumnOptions = {\n addColumnEnable: true,\n addRowEnable: true\n }\n ) {\n this.id = pluginOptions.id ?? this.id;\n this.pluginOptions = pluginOptions;\n this.pluginOptions.addColumnEnable = this.pluginOptions.addColumnEnable ?? true;\n this.pluginOptions.addRowEnable = this.pluginOptions.addRowEnable ?? true;\n if (this.pluginOptions.addColumnEnable) {\n this.initAddColumnDomElement();\n this.bindEventForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.initAddRowDomElement();\n this.bindEventForAddRow();\n }\n }\n run(...args: any[]) {\n const eventArgs = args[0];\n const runTime = args[1];\n const table: VTable.BaseTableAPI = args[2];\n this.table = table as VTable.ListTable;\n if (runTime === VTable.TABLE_EVENT_TYPE.MOUSEENTER_CELL) {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n clearTimeout(this.hideAllTimeoutId_addRow);\n const canvasBounds = table.canvas.getBoundingClientRect();\n const cell = table.getCellAtRelativePosition(\n eventArgs.event.clientX - canvasBounds.left,\n eventArgs.event.clientY - canvasBounds.top\n );\n this.hoverCell = cell;\n const cellRect = table.getCellRelativeRect(cell.col, cell.row);\n if (this.pluginOptions.addColumnEnable) {\n const isRowSerierNumberCol = table.isSeriesNumber(cell.col, 0);\n this.showDotForAddColumn(\n canvasBounds.top - 6,\n cellRect.left + canvasBounds.left,\n cellRect.right + canvasBounds.left,\n !isRowSerierNumberCol\n );\n }\n if (this.pluginOptions.addRowEnable) {\n const isHeader = table.isHeader(cell.col, cell.row);\n this.showDotForAddRow(\n cellRect.top + canvasBounds.top,\n canvasBounds.left - 6,\n cellRect.bottom + canvasBounds.top,\n !isHeader,\n !isHeader\n );\n }\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_CELL) {\n } else if (runTime === VTable.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE) {\n if (this.pluginOptions.addColumnEnable) {\n this.delayHideAllForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.delayHideAllForAddRow();\n }\n }\n }\n // #region 添加列\n initAddColumnDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.leftDotForAddColumn = document.createElement('div');\n this.leftDotForAddColumn.style.width = '6px';\n this.leftDotForAddColumn.style.height = '6px';\n this.leftDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.leftDotForAddColumn.style.position = 'absolute';\n this.leftDotForAddColumn.style.cursor = 'pointer';\n this.leftDotForAddColumn.style.zIndex = '1000';\n this.leftDotForAddColumn.style.borderRadius = '50%';\n this.leftDotForAddColumn.style.border = '1px solid white';\n this.leftDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.leftDotForAddColumn);\n\n //创建一个div 作为hoverCell的顶部右侧的圆点\n this.rightDotForAddColumn = document.createElement('div');\n this.rightDotForAddColumn.style.width = '6px';\n this.rightDotForAddColumn.style.height = '6px';\n this.rightDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.rightDotForAddColumn.style.position = 'absolute';\n this.rightDotForAddColumn.style.cursor = 'pointer';\n this.rightDotForAddColumn.style.zIndex = '1000';\n this.rightDotForAddColumn.style.borderRadius = '50%';\n this.rightDotForAddColumn.style.border = '1px solid white';\n this.rightDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.rightDotForAddColumn);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddColumn = document.createElement('div');\n this.addIconForAddColumn.style.width = '18px';\n this.addIconForAddColumn.style.height = '18px';\n this.addIconForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddColumn.style.position = 'absolute';\n this.addIconForAddColumn.style.zIndex = '1001';\n this.addIconForAddColumn.style.display = 'none';\n this.addIconForAddColumn.style.borderRadius = '50%';\n this.addIconForAddColumn.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddColumn.style.justifyContent = 'center';\n this.addIconForAddColumn.style.alignItems = 'center';\n this.addIconForAddColumn.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddColumn);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddColumn.appendChild(addIconText);\n\n // 创建加号下面列间隔线\n this.addLineForAddColumn = document.createElement('div');\n this.addLineForAddColumn.style.width = '2px';\n this.addLineForAddColumn.style.height = '10px';\n this.addLineForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddColumn.style.position = 'absolute';\n this.addLineForAddColumn.style.zIndex = '1001';\n this.addLineForAddColumn.style.display = 'none';\n document.body.appendChild(this.addLineForAddColumn);\n }\n bindEventForAddColumn() {\n this.leftDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n this.rightDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.rightDotForAddColumn.offsetWidth;\n const dotHeight = this.rightDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n // this.addIconForAddColumn.addEventListener('mouseenter', () => {\n // clearTimeout(this.hideAllTimeoutId_addColumn);\n // });\n this.addIconForAddColumn.addEventListener('mouseleave', () => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.delayHideAllForAddColumn();\n });\n\n this.addIconForAddColumn.addEventListener('click', (e: MouseEvent) => {\n const isLeft = this.addIconForAddColumn.dataset.addIconType === 'left';\n const columns = this.table.options.columns;\n const col = this.hoverCell.col;\n const addColIndex = isLeft ? col : col + 1;\n if (this.pluginOptions.addColumnCallback) {\n this.pluginOptions.addColumnCallback(addColIndex, this.table);\n } else {\n // columns.splice(addColIndex, 0, {\n // field: ``,\n // title: `New Column ${col}`,\n // width: 100\n // });\n // this.table.updateColumns(columns);\n this.table.addColumn(\n {\n field: addColIndex,\n title: `New Column ${col}`,\n width: 100\n },\n addColIndex,\n true\n );\n }\n this.delayHideAllForAddColumn(0);\n });\n }\n showDotForAddColumn(\n top: number,\n left: number,\n right: number,\n isShowLeft: boolean = true,\n isShowRight: boolean = true\n ) {\n // 动态获取元素尺寸\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.leftDotForAddColumn.style.left = `${left - dotWidth / 2}px`;\n this.leftDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.rightDotForAddColumn.style.left = `${right - dotWidth / 2}px`;\n this.rightDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.leftDotForAddColumn.style.display = isShowLeft ? 'block' : 'none';\n this.rightDotForAddColumn.style.display = isShowRight ? 'block' : 'none';\n }\n showAddIconForAddColumn(left: number, top: number, isLeft: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddColumn.offsetWidth;\n const iconHeight = this.addIconForAddColumn.offsetHeight;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.addIconForAddColumn.style.left = `${left - iconWidth / 2}px`;\n this.addIconForAddColumn.style.top = `${top - iconHeight / 2 - dotHeight / 2}px`;\n if (isLeft) {\n this.addIconForAddColumn.dataset.addIconType = 'left';\n } else {\n this.addIconForAddColumn.dataset.addIconType = 'right';\n }\n }\n showSplitLineForAddColumn(left: number, top: number, height: number) {\n this.addLineForAddColumn.style.left = `${left}px`;\n this.addLineForAddColumn.style.top = `${top}px`;\n this.addLineForAddColumn.style.height = `${height}px`;\n this.addLineForAddColumn.style.display = 'block';\n }\n delayHideAllForAddColumn(delay: number = 1000) {\n this.hideAllTimeoutId_addColumn = setTimeout(() => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.leftDotForAddColumn.style.display = 'none';\n this.rightDotForAddColumn.style.display = 'none';\n }, delay);\n }\n // #endregion\n\n // #region 添加行\n initAddRowDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.topDotForAddRow = document.createElement('div');\n this.topDotForAddRow.style.width = '6px';\n this.topDotForAddRow.style.height = '6px';\n this.topDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.topDotForAddRow.style.position = 'absolute';\n this.topDotForAddRow.style.cursor = 'pointer';\n this.topDotForAddRow.style.zIndex = '1000';\n this.topDotForAddRow.style.borderRadius = '50%';\n this.topDotForAddRow.style.border = '1px solid white';\n this.topDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.topDotForAddRow);\n\n //创建一个div 作为hoverCell的底部右侧的圆点\n this.bottomDotForAddRow = document.createElement('div');\n this.bottomDotForAddRow.style.width = '6px';\n this.bottomDotForAddRow.style.height = '6px';\n this.bottomDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.bottomDotForAddRow.style.position = 'absolute';\n this.bottomDotForAddRow.style.cursor = 'pointer';\n this.bottomDotForAddRow.style.zIndex = '1000';\n this.bottomDotForAddRow.style.borderRadius = '50%';\n this.bottomDotForAddRow.style.border = '1px solid white';\n this.bottomDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.bottomDotForAddRow);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddRow = document.createElement('div');\n this.addIconForAddRow.style.width = '18px';\n this.addIconForAddRow.style.height = '18px';\n this.addIconForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddRow.style.position = 'absolute';\n this.addIconForAddRow.style.zIndex = '1001';\n this.addIconForAddRow.style.display = 'none';\n this.addIconForAddRow.style.borderRadius = '50%';\n this.addIconForAddRow.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddRow.style.justifyContent = 'center';\n this.addIconForAddRow.style.alignItems = 'center';\n this.addIconForAddRow.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddRow);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddRow.appendChild(addIconText);\n\n // 创建加号下面行间隔线\n this.addLineForAddRow = document.createElement('div');\n this.addLineForAddRow.style.width = '10px';\n this.addLineForAddRow.style.height = '2px';\n this.addLineForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddRow.style.position = 'absolute';\n this.addLineForAddRow.style.zIndex = '1001';\n this.addLineForAddRow.style.display = 'none';\n document.body.appendChild(this.addLineForAddRow);\n }\n bindEventForAddRow() {\n this.topDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth / 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth + 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().width\n );\n });\n\n this.bottomDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.bottomDotForAddRow.offsetWidth;\n const dotHeight = this.bottomDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth / 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth + 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().height\n );\n });\n\n this.addIconForAddRow.addEventListener('mouseleave', () => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.delayHideAllForAddRow();\n });\n\n this.addIconForAddRow.addEventListener('click', (e: MouseEvent) => {\n const isTop = this.addIconForAddRow.dataset.addIconType === 'top';\n const row = this.hoverCell.row;\n const addRowIndex = isTop ? row : row + 1;\n if (this.pluginOptions.addRowCallback) {\n this.pluginOptions.addRowCallback(addRowIndex, this.table as VTable.ListTable);\n } else {\n const recordIndex = this.table.getRecordIndexByCell(0, addRowIndex);\n this.table.addRecord({}, recordIndex);\n }\n this.delayHideAllForAddRow(0);\n });\n }\n showDotForAddRow(top: number, left: number, bottom: number, isShowTop: boolean = true, isShowBottom: boolean = true) {\n // 动态获取元素尺寸\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.topDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.topDotForAddRow.style.top = `${top - dotHeight / 2}px`;\n this.bottomDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.bottomDotForAddRow.style.top = `${bottom - dotHeight / 2}px`;\n this.topDotForAddRow.style.display = isShowTop ? 'block' : 'none';\n this.bottomDotForAddRow.style.display = isShowBottom ? 'block' : 'none';\n }\n showAddIconForAddRow(left: number, top: number, isTop: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddRow.offsetWidth;\n const iconHeight = this.addIconForAddRow.offsetHeight;\n const dotWidth = this.topDotForAddRow.offsetWidth;\n this.addIconForAddRow.style.left = `${left - iconWidth / 2 - dotWidth / 2}px`;\n this.addIconForAddRow.style.top = `${top - iconHeight / 2}px`;\n if (isTop) {\n this.addIconForAddRow.dataset.addIconType = 'top';\n } else {\n this.addIconForAddRow.dataset.addIconType = 'bottom';\n }\n }\n showSplitLineForAddRow(left: number, top: number, width: number) {\n this.addLineForAddRow.style.left = `${left}px`;\n this.addLineForAddRow.style.top = `${top}px`;\n this.addLineForAddRow.style.width = `${width}px`;\n this.addLineForAddRow.style.display = 'block';\n }\n delayHideAllForAddRow(delay: number = 1000) {\n this.hideAllTimeoutId_addRow = setTimeout(() => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.topDotForAddRow.style.display = 'none';\n this.bottomDotForAddRow.style.display = 'none';\n }, delay);\n }\n // #endregion\n release() {\n this.leftDotForAddColumn.remove();\n this.rightDotForAddColumn.remove();\n this.addIconForAddColumn.remove();\n this.addLineForAddColumn.remove();\n this.topDotForAddRow.remove();\n this.bottomDotForAddRow.remove();\n this.addIconForAddRow.remove();\n this.addLineForAddRow.remove();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/add-row-column.ts"],"names":[],"mappings":"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","file":"add-row-column.js","sourcesContent":["import type { ListTable, BaseTableAPI, TYPES } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { pluginsDefinition } from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface AddRowColumnOptions {\n id?: string;\n /**\n * 是否启用添加列\n */\n addColumnEnable?: boolean;\n /**\n * 是否启用添加行\n */\n addRowEnable?: boolean;\n /**\n * 添加列的回调函数\n */\n addColumnCallback?: (col: number, table: ListTable) => void;\n /**\n * 添加行的回调函数\n */\n addRowCallback?: (row: number, table: ListTable) => void;\n}\n/**\n * 添加行和列的插件\n * 该插件监听了table的MOUSEENTER_CELL,MOUSELEAVE_CELL,MOUSELEAVE_TABLE事件\n * 当鼠标hover到table的cell时,会显示添加行和列的dot和加号\n * 当鼠标离开table的cell时,会隐藏添加行和列的dot和加号\n */\nexport class AddRowColumnPlugin implements pluginsDefinition.IVTablePlugin {\n id = `add-row-column`;\n name = 'Add Row Column';\n runTime = [TABLE_EVENT_TYPE.MOUSEENTER_CELL, TABLE_EVENT_TYPE.MOUSELEAVE_CELL, TABLE_EVENT_TYPE.MOUSELEAVE_TABLE];\n pluginOptions: AddRowColumnOptions;\n table: ListTable;\n hoverCell: TYPES.CellAddressWithBound;\n hideAllTimeoutId_addColumn: NodeJS.Timeout;\n hideAllTimeoutId_addRow: NodeJS.Timeout;\n leftDotForAddColumn: HTMLElement;\n rightDotForAddColumn: HTMLElement;\n addIconForAddColumn: HTMLElement;\n addLineForAddColumn: HTMLElement;\n topDotForAddRow: HTMLElement;\n bottomDotForAddRow: HTMLElement;\n addIconForAddRow: HTMLElement;\n addLineForAddRow: HTMLElement;\n\n constructor(\n pluginOptions: AddRowColumnOptions = {\n addColumnEnable: true,\n addRowEnable: true\n }\n ) {\n this.id = pluginOptions.id ?? this.id;\n this.pluginOptions = pluginOptions;\n this.pluginOptions.addColumnEnable = this.pluginOptions.addColumnEnable ?? true;\n this.pluginOptions.addRowEnable = this.pluginOptions.addRowEnable ?? true;\n if (this.pluginOptions.addColumnEnable) {\n this.initAddColumnDomElement();\n this.bindEventForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.initAddRowDomElement();\n this.bindEventForAddRow();\n }\n }\n run(...args: any[]) {\n const eventArgs = args[0];\n const runTime = args[1];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n if (runTime === TABLE_EVENT_TYPE.MOUSEENTER_CELL) {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n clearTimeout(this.hideAllTimeoutId_addRow);\n const canvasBounds = table.canvas.getBoundingClientRect();\n const cell = table.getCellAtRelativePosition(\n eventArgs.event.clientX - canvasBounds.left,\n eventArgs.event.clientY - canvasBounds.top\n );\n this.hoverCell = cell;\n const cellRect = table.getCellRelativeRect(cell.col, cell.row);\n if (this.pluginOptions.addColumnEnable) {\n const isRowSerierNumberCol = table.isSeriesNumber(cell.col, 0);\n this.showDotForAddColumn(\n canvasBounds.top - 6,\n cellRect.left + canvasBounds.left,\n cellRect.right + canvasBounds.left,\n !isRowSerierNumberCol\n );\n }\n if (this.pluginOptions.addRowEnable) {\n const isHeader = table.isHeader(cell.col, cell.row);\n this.showDotForAddRow(\n cellRect.top + canvasBounds.top,\n canvasBounds.left - 6,\n cellRect.bottom + canvasBounds.top,\n !isHeader,\n !isHeader\n );\n }\n } else if (runTime === TABLE_EVENT_TYPE.MOUSELEAVE_CELL) {\n } else if (runTime === TABLE_EVENT_TYPE.MOUSELEAVE_TABLE) {\n if (this.pluginOptions.addColumnEnable) {\n this.delayHideAllForAddColumn();\n }\n if (this.pluginOptions.addRowEnable) {\n this.delayHideAllForAddRow();\n }\n }\n }\n // #region 添加列\n initAddColumnDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.leftDotForAddColumn = document.createElement('div');\n this.leftDotForAddColumn.style.width = '6px';\n this.leftDotForAddColumn.style.height = '6px';\n this.leftDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.leftDotForAddColumn.style.position = 'absolute';\n this.leftDotForAddColumn.style.cursor = 'pointer';\n this.leftDotForAddColumn.style.zIndex = '1000';\n this.leftDotForAddColumn.style.borderRadius = '50%';\n this.leftDotForAddColumn.style.border = '1px solid white';\n this.leftDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.leftDotForAddColumn);\n\n //创建一个div 作为hoverCell的顶部右侧的圆点\n this.rightDotForAddColumn = document.createElement('div');\n this.rightDotForAddColumn.style.width = '6px';\n this.rightDotForAddColumn.style.height = '6px';\n this.rightDotForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.rightDotForAddColumn.style.position = 'absolute';\n this.rightDotForAddColumn.style.cursor = 'pointer';\n this.rightDotForAddColumn.style.zIndex = '1000';\n this.rightDotForAddColumn.style.borderRadius = '50%';\n this.rightDotForAddColumn.style.border = '1px solid white';\n this.rightDotForAddColumn.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.rightDotForAddColumn);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddColumn = document.createElement('div');\n this.addIconForAddColumn.style.width = '18px';\n this.addIconForAddColumn.style.height = '18px';\n this.addIconForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddColumn.style.position = 'absolute';\n this.addIconForAddColumn.style.zIndex = '1001';\n this.addIconForAddColumn.style.display = 'none';\n this.addIconForAddColumn.style.borderRadius = '50%';\n this.addIconForAddColumn.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddColumn.style.justifyContent = 'center';\n this.addIconForAddColumn.style.alignItems = 'center';\n this.addIconForAddColumn.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddColumn);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddColumn.appendChild(addIconText);\n\n // 创建加号下面列间隔线\n this.addLineForAddColumn = document.createElement('div');\n this.addLineForAddColumn.style.width = '2px';\n this.addLineForAddColumn.style.height = '10px';\n this.addLineForAddColumn.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddColumn.style.position = 'absolute';\n this.addLineForAddColumn.style.zIndex = '1001';\n this.addLineForAddColumn.style.display = 'none';\n document.body.appendChild(this.addLineForAddColumn);\n }\n bindEventForAddColumn() {\n this.leftDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddColumn(\n this.leftDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.leftDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n this.rightDotForAddColumn.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addColumn);\n this.addIconForAddColumn.style.display = 'block';\n const dotWidth = this.rightDotForAddColumn.offsetWidth;\n const dotHeight = this.rightDotForAddColumn.offsetHeight;\n this.showAddIconForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddColumn(\n this.rightDotForAddColumn.offsetLeft + dotWidth / 2 - 1,\n this.rightDotForAddColumn.offsetTop + dotHeight / 2 + 2,\n this.table.getDrawRange().height\n );\n });\n\n // this.addIconForAddColumn.addEventListener('mouseenter', () => {\n // clearTimeout(this.hideAllTimeoutId_addColumn);\n // });\n this.addIconForAddColumn.addEventListener('mouseleave', () => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.delayHideAllForAddColumn();\n });\n\n this.addIconForAddColumn.addEventListener('click', (e: MouseEvent) => {\n const isLeft = this.addIconForAddColumn.dataset.addIconType === 'left';\n const columns = this.table.options.columns;\n const col = this.hoverCell.col;\n const addColIndex = isLeft ? col : col + 1;\n if (this.pluginOptions.addColumnCallback) {\n this.pluginOptions.addColumnCallback(addColIndex, this.table);\n } else {\n // columns.splice(addColIndex, 0, {\n // field: ``,\n // title: `New Column ${col}`,\n // width: 100\n // });\n // this.table.updateColumns(columns);\n this.table.addColumn(\n {\n field: addColIndex,\n title: `New Column ${col}`,\n width: 100\n },\n addColIndex,\n true\n );\n }\n this.delayHideAllForAddColumn(0);\n });\n }\n showDotForAddColumn(\n top: number,\n left: number,\n right: number,\n isShowLeft: boolean = true,\n isShowRight: boolean = true\n ) {\n // 动态获取元素尺寸\n const dotWidth = this.leftDotForAddColumn.offsetWidth;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.leftDotForAddColumn.style.left = `${left - dotWidth / 2}px`;\n this.leftDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.rightDotForAddColumn.style.left = `${right - dotWidth / 2}px`;\n this.rightDotForAddColumn.style.top = `${top - dotHeight / 2}px`;\n this.leftDotForAddColumn.style.display = isShowLeft ? 'block' : 'none';\n this.rightDotForAddColumn.style.display = isShowRight ? 'block' : 'none';\n }\n showAddIconForAddColumn(left: number, top: number, isLeft: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddColumn.offsetWidth;\n const iconHeight = this.addIconForAddColumn.offsetHeight;\n const dotHeight = this.leftDotForAddColumn.offsetHeight;\n this.addIconForAddColumn.style.left = `${left - iconWidth / 2}px`;\n this.addIconForAddColumn.style.top = `${top - iconHeight / 2 - dotHeight / 2}px`;\n if (isLeft) {\n this.addIconForAddColumn.dataset.addIconType = 'left';\n } else {\n this.addIconForAddColumn.dataset.addIconType = 'right';\n }\n }\n showSplitLineForAddColumn(left: number, top: number, height: number) {\n this.addLineForAddColumn.style.left = `${left}px`;\n this.addLineForAddColumn.style.top = `${top}px`;\n this.addLineForAddColumn.style.height = `${height}px`;\n this.addLineForAddColumn.style.display = 'block';\n }\n delayHideAllForAddColumn(delay: number = 1000) {\n this.hideAllTimeoutId_addColumn = setTimeout(() => {\n this.addIconForAddColumn.style.display = 'none';\n this.addLineForAddColumn.style.display = 'none';\n this.leftDotForAddColumn.style.display = 'none';\n this.rightDotForAddColumn.style.display = 'none';\n }, delay);\n }\n // #endregion\n\n // #region 添加行\n initAddRowDomElement() {\n //创建一个div 作为hoverCell的顶部左侧的圆点\n this.topDotForAddRow = document.createElement('div');\n this.topDotForAddRow.style.width = '6px';\n this.topDotForAddRow.style.height = '6px';\n this.topDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.topDotForAddRow.style.position = 'absolute';\n this.topDotForAddRow.style.cursor = 'pointer';\n this.topDotForAddRow.style.zIndex = '1000';\n this.topDotForAddRow.style.borderRadius = '50%';\n this.topDotForAddRow.style.border = '1px solid white';\n this.topDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.topDotForAddRow);\n\n //创建一个div 作为hoverCell的底部右侧的圆点\n this.bottomDotForAddRow = document.createElement('div');\n this.bottomDotForAddRow.style.width = '6px';\n this.bottomDotForAddRow.style.height = '6px';\n this.bottomDotForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.bottomDotForAddRow.style.position = 'absolute';\n this.bottomDotForAddRow.style.cursor = 'pointer';\n this.bottomDotForAddRow.style.zIndex = '1000';\n this.bottomDotForAddRow.style.borderRadius = '50%';\n this.bottomDotForAddRow.style.border = '1px solid white';\n this.bottomDotForAddRow.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n document.body.appendChild(this.bottomDotForAddRow);\n\n //创建+加号 当鼠标hover到圆点上时,显示+加号\n this.addIconForAddRow = document.createElement('div');\n this.addIconForAddRow.style.width = '18px';\n this.addIconForAddRow.style.height = '18px';\n this.addIconForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addIconForAddRow.style.position = 'absolute';\n this.addIconForAddRow.style.zIndex = '1001';\n this.addIconForAddRow.style.display = 'none';\n this.addIconForAddRow.style.borderRadius = '50%';\n this.addIconForAddRow.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';\n this.addIconForAddRow.style.justifyContent = 'center';\n this.addIconForAddRow.style.alignItems = 'center';\n this.addIconForAddRow.style.border = '1px solid white';\n document.body.appendChild(this.addIconForAddRow);\n\n //addIcon中添加一个+号\n const addIconText = document.createElement('div');\n addIconText.textContent = '+';\n addIconText.style.color = 'white';\n addIconText.style.fontSize = '18px';\n addIconText.style.fontWeight = 'bold';\n addIconText.style.lineHeight = '15px';\n addIconText.style.userSelect = 'none';\n addIconText.style.cursor = 'pointer';\n addIconText.style.verticalAlign = 'top';\n addIconText.style.textAlign = 'center';\n\n this.addIconForAddRow.appendChild(addIconText);\n\n // 创建加号下面行间隔线\n this.addLineForAddRow = document.createElement('div');\n this.addLineForAddRow.style.width = '10px';\n this.addLineForAddRow.style.height = '2px';\n this.addLineForAddRow.style.backgroundColor = '#4A90E2'; // 蓝色\n this.addLineForAddRow.style.position = 'absolute';\n this.addLineForAddRow.style.zIndex = '1001';\n this.addLineForAddRow.style.display = 'none';\n document.body.appendChild(this.addLineForAddRow);\n }\n bindEventForAddRow() {\n this.topDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth / 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2,\n true\n );\n this.showSplitLineForAddRow(\n this.topDotForAddRow.offsetLeft + dotWidth + 2,\n this.topDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().width\n );\n });\n\n this.bottomDotForAddRow.addEventListener('mouseenter', () => {\n clearTimeout(this.hideAllTimeoutId_addRow);\n this.addIconForAddRow.style.display = 'block';\n const dotWidth = this.bottomDotForAddRow.offsetWidth;\n const dotHeight = this.bottomDotForAddRow.offsetHeight;\n this.showAddIconForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth / 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2,\n false\n );\n this.showSplitLineForAddRow(\n this.bottomDotForAddRow.offsetLeft + dotWidth + 2,\n this.bottomDotForAddRow.offsetTop + dotHeight / 2 - 1,\n this.table.getDrawRange().height\n );\n });\n\n this.addIconForAddRow.addEventListener('mouseleave', () => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.delayHideAllForAddRow();\n });\n\n this.addIconForAddRow.addEventListener('click', (e: MouseEvent) => {\n const isTop = this.addIconForAddRow.dataset.addIconType === 'top';\n const row = this.hoverCell.row;\n const addRowIndex = isTop ? row : row + 1;\n if (this.pluginOptions.addRowCallback) {\n this.pluginOptions.addRowCallback(addRowIndex, this.table as ListTable);\n } else {\n const recordIndex = this.table.getRecordIndexByCell(0, addRowIndex);\n this.table.addRecord({}, recordIndex);\n }\n this.delayHideAllForAddRow(0);\n });\n }\n showDotForAddRow(top: number, left: number, bottom: number, isShowTop: boolean = true, isShowBottom: boolean = true) {\n // 动态获取元素尺寸\n const dotWidth = this.topDotForAddRow.offsetWidth;\n const dotHeight = this.topDotForAddRow.offsetHeight;\n this.topDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.topDotForAddRow.style.top = `${top - dotHeight / 2}px`;\n this.bottomDotForAddRow.style.left = `${left - dotWidth / 2}px`;\n this.bottomDotForAddRow.style.top = `${bottom - dotHeight / 2}px`;\n this.topDotForAddRow.style.display = isShowTop ? 'block' : 'none';\n this.bottomDotForAddRow.style.display = isShowBottom ? 'block' : 'none';\n }\n showAddIconForAddRow(left: number, top: number, isTop: boolean) {\n // 动态获取元素尺寸\n const iconWidth = this.addIconForAddRow.offsetWidth;\n const iconHeight = this.addIconForAddRow.offsetHeight;\n const dotWidth = this.topDotForAddRow.offsetWidth;\n this.addIconForAddRow.style.left = `${left - iconWidth / 2 - dotWidth / 2}px`;\n this.addIconForAddRow.style.top = `${top - iconHeight / 2}px`;\n if (isTop) {\n this.addIconForAddRow.dataset.addIconType = 'top';\n } else {\n this.addIconForAddRow.dataset.addIconType = 'bottom';\n }\n }\n showSplitLineForAddRow(left: number, top: number, width: number) {\n this.addLineForAddRow.style.left = `${left}px`;\n this.addLineForAddRow.style.top = `${top}px`;\n this.addLineForAddRow.style.width = `${width}px`;\n this.addLineForAddRow.style.display = 'block';\n }\n delayHideAllForAddRow(delay: number = 1000) {\n this.hideAllTimeoutId_addRow = setTimeout(() => {\n this.addIconForAddRow.style.display = 'none';\n this.addLineForAddRow.style.display = 'none';\n this.topDotForAddRow.style.display = 'none';\n this.bottomDotForAddRow.style.display = 'none';\n }, delay);\n }\n // #endregion\n release() {\n this.leftDotForAddColumn.remove();\n this.rightDotForAddColumn.remove();\n this.addIconForAddColumn.remove();\n this.addLineForAddColumn.remove();\n this.topDotForAddRow.remove();\n this.bottomDotForAddRow.remove();\n this.addIconForAddRow.remove();\n this.addLineForAddRow.remove();\n }\n}\n"]}
@@ -1,35 +1,10 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
29
4
  value: !0
30
5
  }), exports.AutoFillManager = void 0;
31
6
 
32
- const types_1 = require("./types"), auto_fill_services_1 = require("./auto-fill-services"), rules_1 = require("./rules"), fill_1 = require("./utils/fill"), VTable = __importStar(require("@visactor/vtable")), auto_fill_helper_1 = require("./auto-fill-helper"), ts_types_1 = require("@visactor/vtable/es/ts-types");
7
+ const types_1 = require("./types"), auto_fill_services_1 = require("./auto-fill-services"), rules_1 = require("./rules"), fill_1 = require("./utils/fill"), vtable_1 = require("@visactor/vtable"), auto_fill_helper_1 = require("./auto-fill-helper"), ts_types_1 = require("@visactor/vtable/es/ts-types");
33
8
 
34
9
  class AutoFillManager {
35
10
  constructor(options) {
@@ -39,7 +14,7 @@ class AutoFillManager {
39
14
  this.headers = {
40
15
  row: new Set,
41
16
  col: new Set
42
- }, this.tableInstance = table, table.on(VTable.TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, (args => {
17
+ }, this.tableInstance = table, table.on(vtable_1.TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, (args => {
43
18
  "复制填充" === args.text ? this.fillData(types_1.APPLY_TYPE.COPY) : "序列填充" === args.text && this.fillData(types_1.APPLY_TYPE.SERIES);
44
19
  }));
45
20
  const rowHeaderCells = this.tableInstance.getAllRowHeaderCells()[0];
@@ -176,18 +151,14 @@ class AutoFillManager {
176
151
  }));
177
152
  for (let i = 0; i < untransformedApplyDatas[0].length; i++) {
178
153
  const row = [];
179
- for (let j = 0; j < untransformedApplyDatas.length; j++) row.push(Object.assign({
180
- s: null
181
- }, untransformedApplyDatas[j][i]));
154
+ for (let j = 0; j < untransformedApplyDatas.length; j++) row.push(untransformedApplyDatas[j][i]);
182
155
  applyDatas.push(row);
183
156
  }
184
157
  } else {
185
158
  const asLen = targetCols.length;
186
159
  targetRows.forEach(((_, i) => {
187
160
  const copyD = sourceData[i], applyData = this.getApplyData(copyD, csLen, asLen, direction, applyType, location), row = [];
188
- for (let j = 0; j < applyData.length; j++) row.push(Object.assign({
189
- s: null
190
- }, applyData[j]));
161
+ for (let j = 0; j < applyData.length; j++) row.push(applyData[j]);
191
162
  applyDatas.push(row);
192
163
  }));
193
164
  }
@@ -195,9 +166,10 @@ class AutoFillManager {
195
166
  targetRows.forEach(((row, rowIndex) => {
196
167
  const rowValues = [];
197
168
  targetCols.forEach(((col, colIndex) => {
169
+ var _a;
198
170
  const range = (0, auto_fill_helper_1.isMergeCell)(this.tableInstance, col, row);
199
171
  range && this.tableInstance.unmergeCells(range.start.col, range.start.row, range.end.col, range.end.row),
200
- applyDatas[rowIndex][colIndex] && rowValues.push(applyDatas[rowIndex][colIndex].v + "");
172
+ applyDatas[rowIndex][colIndex] && rowValues.push((null === (_a = applyDatas[rowIndex][colIndex]) || void 0 === _a ? void 0 : _a.v) + "");
201
173
  })), values.push(rowValues);
202
174
  }));
203
175
  const minRow = Math.min(...targetRows), minCol = Math.min(...targetCols);
@@ -237,6 +209,7 @@ class AutoFillManager {
237
209
  (null == customApplyFunctions ? void 0 : customApplyFunctions[types_1.APPLY_TYPE.COPY]) ? customApplyFunctions[types_1.APPLY_TYPE.COPY](copySquad, len, direction, sourceDataPiece, location) : (0,
238
210
  fill_1.fillCopy)(data, len));
239
211
  }
212
+ return [];
240
213
  }
241
214
  }
242
215
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/auto-fill/auto-fill-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,mCAA+D;AAS/D,6DAAuD;AACvD,mCAAoC;AACpC,uCAA+D;AAK/D,yDAA2C;AAC3C,yDAM4B;AAE5B,2DAAgE;AAChE,MAAa,eAAe;IAqB1B,YAAY,OAAgC;QAnBpC,eAAU,GAAuB,EAAE,CAAC;QAoB1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,oCAAe,EAAE,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,KAAgB;QACvB,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,IAAI,GAAG,EAAE;YACd,GAAG,EAAE,IAAI,GAAG,EAAE;SACf,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,IAAS,EAAE,EAAE;YAClE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,kBAAU,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,kBAAU,CAAC,MAAM,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QAGH,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAGD,eAAe,CAAC,aAAwB;QACtC,IAAI,CAAC,WAAW,GAAG,IAAA,wCAAqB,EAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,aAAa,CAAC,kBAA6B,EAAE,SAAiB;;QAE5D,IAAI,CAAC,SAAS,GAAG,SAAsB,CAAC;QAExC,MAAM,aAAa,GAAG,IAAA,wCAAqB,EAAC,kBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,CAAA,EAAE;YAC3B,IAAA,mCAAgB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;SACxG;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAsB,CAAC,CAAC;SACpD;IACH,CAAC;IAED,aAAa;;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,GAAG,iBAAS,CAAC,IAAI,CAAC;QAEhC,MAAM,eAAe,GAAG,IAAA,wCAAqB,EAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5E,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QACrD,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClF,YAAY,CAAC,sBAAsB,CAAC,2BAAgB,CAAC,OAAO,CAAC,CAAC;QAC9D,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9E,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,YAAY,CAAC,sBAAsB,CAAC,2BAAgB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAA,EAAE;YAE/B,IAAA,mCAAgB,EAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAA0B,CAAC,CAAC;SACxD;IACH,CAAC;IAMD,QAAQ,CAAC,SAAqB;QAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,MAAM,EAAE,IAAI,CAAC,WAAW;SACzB,CAAC;QAGF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAOO,aAAa,CAAC,MAAsB,EAAE,SAAoB;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAuB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,SAAS,KAAK,iBAAS,CAAC,IAAI,IAAI,SAAS,KAAK,iBAAS,CAAC,EAAE,CAAC;QAC9E,IAAI,MAAgB,CAAC;QACrB,IAAI,MAAgB,CAAC;QACrB,IAAI,UAAU,EAAE;YACd,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;SACtB;aAAM;YACL,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;SACtB;QACD,MAAM,MAAM,GAAG,IAAA,gCAAa,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAuB;gBACnC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;aACpB,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjB,IAAI,IAAyB,CAAC;gBAC9B,IAAI,UAAU,EAAE;oBACd,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC9B;qBAAM;oBACL,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,iBAAS,CAAC;gBAC/E,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;oBAC9B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;oBAEvC,MAAM,IAAI,GAAG,QAAS,CAAC,QAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChC;qBAAM;oBACL,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;yBACvB,CAAC,CAAC;qBACJ;yBAAM;wBACL,eAAe,CAAC,IAAI,CAAC,GAAG;4BACtB;gCACE,IAAI,EAAE,CAAC,IAAI,CAAC;gCACZ,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;6BACvB;yBACF,CAAC;qBACH;iBACF;gBACD,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAKO,uBAAuB;QAC7B,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACzB,CAAC;IAKO,gBAAgB;;QAEtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACnG,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAEjG,MAAM,MAAM,GAAG,IAAA,gCAAa,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC;QAE3B,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,KAAI,MAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,0CAAE,CAAC,CAAA,EAAE;YACjE,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,OAAO,CAAA,MAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,0CAAE,CAAC,KAAI,GAAG,IAAI,MAAM,EAAE;gBAC9D,GAAG,IAAI,CAAC,CAAC;aACV;YACD,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;SACxB;aAAM,IAAI,GAAG,CAAC,GAAG,GAAG,SAAS,KAAI,MAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,0CAAE,CAAC,CAAA,EAAE;YAC1E,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,OAAO,CAAA,MAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,0CAAE,CAAC,KAAI,GAAG,IAAI,MAAM,EAAE;gBAC5D,GAAG,IAAI,CAAC,CAAC;aACV;YACD,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;SACxB;QACD,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,MAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,0CAAE,CAAC,EAAE;oBAC5B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;iBACP;aACF;SACF;QACD,OAAO;YACL,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;YACzC,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;SACzC,CAAC;IACJ,CAAC;IAQO,SAAS,CAAC,QAA2B,EAAE,SAAoB,EAAE,SAAqB;QACxF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,IAAI,EAAE;YAC3C,OAAO;SACR;QAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACtD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAI,KAAK,CAAC;QACV,IAAI,SAAS,KAAK,iBAAS,CAAC,IAAI,IAAI,SAAS,KAAK,iBAAS,CAAC,EAAE,EAAE;YAC9D,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;SAC3B;aAAM;YACL,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;SAC3B;QAED,MAAM,UAAU,GAAsC,EAAE,CAAC;QAEzD,IAAI,SAAS,KAAK,iBAAS,CAAC,IAAI,IAAI,SAAS,KAAK,iBAAS,CAAC,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,uBAAuB,GAA4B,EAAE,CAAC;YAC5D,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACzF,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1D,MAAM,GAAG,GAA+B,EAAE,CAAC;gBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvD,GAAG,CAAC,IAAI,iBACN,CAAC,EAAE,IAAI,IACJ,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,CAAC;iBACJ;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;aAAM;YACL,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACzF,MAAM,GAAG,GAA+B,EAAE,CAAC;gBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,GAAG,CAAC,IAAI,iBACN,CAAC,EAAE,IAAI,IACJ,SAAS,CAAC,CAAC,CAAC,EACf,CAAC;iBACJ;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;QAGD,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACnC,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBAEnC,MAAM,KAAK,GAAG,IAAA,8BAAW,EAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxD,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjG;gBAED,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAClC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;iBACxD;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAYO,YAAY,CAClB,eAAiC,EACjC,KAAa,EACb,KAAa,EACb,SAAoB,EACpB,SAAqB,EACrB,QAA2B;QAE3B,MAAM,SAAS,GAA+B,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAE9C,MAAM,gBAAgB,GAA6B,EAAE,CAAC;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChB,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAGH,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,oBAAoB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO;aACR;YAGD,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACjC,MAAM,CAAC,GAAG,IAAA,cAAO,EAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;gBAG7C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CACjC,SAAS,EACT,GAAG,EACH,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,QAAQ,CACT,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7D,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAGH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAChB,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACnB,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;wBACjC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtE;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAYO,cAAc,CACpB,SAA0B,EAC1B,GAAW,EACX,SAAoB,EACpB,SAAqB,EACrB,oBAAqC,EACrC,eAAiC,EACjC,QAA2B;QAE3B,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QAC3B,MAAM,SAAS,GAAG,SAAS,KAAK,iBAAS,CAAC,EAAE,IAAI,SAAS,KAAK,iBAAS,CAAC,IAAI,CAAC;QAG7E,IAAI,SAAS,KAAK,kBAAU,CAAC,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,kBAAU,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;aACrE;YACD,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAA,eAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5B;QAED,IAAI,SAAS,KAAK,kBAAU,CAAC,MAAM,EAAE;YACnC,MAAM,MAAM,GAAG,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,kBAAU,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;aAC3D;YACD,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAE5B,IAAI,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,kBAAU,CAAC,IAAI,CAAC,EAAE;gBAC3C,OAAO,oBAAoB,CAAC,kBAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;aACpG;YACD,OAAO,IAAA,eAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;CACF;AA/bD,0CA+bC","file":"auto-fill-manager.js","sourcesContent":["/**\n * Copyright 2023-present DreamNum Co., Ltd.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Direction, APPLY_TYPE, CellValueType } from './types';\nimport type {\n ISourceDataPiece,\n ICellData,\n Nullable,\n IRuleConfirmedData,\n IDiscreteRange,\n IAutoFillLocation\n} from './types';\nimport { AutoFillService } from './auto-fill-services';\nimport { otherRule } from './rules';\nimport { fillCopy, getDataIndex, getLenS } from './utils/fill';\nimport type { ICopyDataInType } from './utils/fill';\nimport type { APPLY_FUNCTIONS } from './types';\nimport type { CellRange } from '@visactor/vtable/es/ts-types/table-engine';\nimport type { ListTable } from '@visactor/vtable';\nimport * as VTable from '@visactor/vtable';\nimport {\n getSelectedRangeArray,\n getTargetRange,\n openAutoFillMenu,\n getCellMatrix,\n isMergeCell\n} from './auto-fill-helper';\nimport type { IAutoFillPluginOptions } from '.';\nimport { InteractionState } from '@visactor/vtable/es/ts-types';\nexport class AutoFillManager {\n // 源数据\n private sourceData: ISourceDataPiece[] = [];\n // autoFillService 维护规则列表\n private autoFillService: AutoFillService;\n // 表格实例\n private tableInstance: ListTable;\n // 源范围\n private sourceRange: IDiscreteRange;\n // 目标范围\n private targetRange: IDiscreteRange;\n // 填充方向\n private direction: Direction;\n // 行列头\n private headers: {\n row: Set<number>;\n col: Set<number>;\n };\n\n private options?: IAutoFillPluginOptions;\n\n constructor(options?: IAutoFillPluginOptions) {\n this.options = options;\n this.autoFillService = new AutoFillService();\n }\n\n setTable(table: ListTable) {\n this.headers = {\n row: new Set(),\n col: new Set()\n };\n this.tableInstance = table;\n table.on(VTable.TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, (args: any) => {\n if (args.text === '复制填充') {\n this.fillData(APPLY_TYPE.COPY);\n } else if (args.text === '序列填充') {\n this.fillData(APPLY_TYPE.SERIES);\n }\n });\n\n //cal headers\n const rowHeaderCells = this.tableInstance.getAllRowHeaderCells()[0];\n if (rowHeaderCells) {\n rowHeaderCells.forEach(cell => {\n this.headers.col.add(cell.col);\n });\n }\n const colHeaderCells = this.tableInstance.getAllColumnHeaderCells()[0];\n if (colHeaderCells) {\n colHeaderCells.forEach(cell => {\n this.headers.row.add(cell.row);\n });\n }\n }\n\n // 开始拖拽\n handleStartDrag(selectedRange: CellRange) {\n this.sourceRange = getSelectedRangeArray(selectedRange);\n this.sourceRange.cols = this.sourceRange.cols.filter(col => !this.headers.col.has(col));\n this.sourceRange.rows = this.sourceRange.rows.filter(row => !this.headers.row.has(row));\n }\n // 结束拖拽\n handleEndDrag(endSelectCellRange: CellRange, direction: string) {\n // set direction\n this.direction = direction as Direction;\n // set target range\n const selectedRange = getSelectedRangeArray(endSelectCellRange);\n this.targetRange = getTargetRange(this.direction, this.sourceRange, selectedRange);\n this.targetRange.cols = this.targetRange.cols.filter(col => !this.headers.col.has(col));\n this.targetRange.rows = this.targetRange.rows.filter(row => !this.headers.row.has(row));\n // open auto fill menu\n if (!this.options?.fillMode) {\n openAutoFillMenu(this.tableInstance, Math.max(...selectedRange.cols), Math.max(...selectedRange.rows));\n } else {\n this.fillData(this.options.fillMode as APPLY_TYPE);\n }\n }\n\n handleDbClick() {\n if (!this.sourceRange) {\n return;\n }\n this.direction = Direction.DOWN;\n // 双击填充时,自动检测填充范围\n const detectFillRange = getSelectedRangeArray(this._detectFillRange());\n this.targetRange = getTargetRange(this.direction, this.sourceRange, detectFillRange);\n this.targetRange.cols = this.targetRange.cols.filter(col => !this.headers.col.has(col));\n this.targetRange.rows = this.targetRange.rows.filter(row => !this.headers.row.has(row));\n if (this.targetRange.cols.length === 0 || this.targetRange.rows.length === 0) {\n return;\n }\n const startCol = this.sourceRange.cols[0];\n const startRow = this.sourceRange.rows[0];\n const endCol = this.targetRange.cols[this.targetRange.cols.length - 1];\n const endRow = this.targetRange.rows[this.targetRange.rows.length - 1];\n // 更新选区\n const stateManager = this.tableInstance.stateManager;\n stateManager.updateSelectPos(startCol, startRow, false, false, false, true, true);\n stateManager.updateInteractionState(InteractionState.grabing);\n stateManager.updateSelectPos(endCol, endRow, false, false, false, true, true);\n stateManager.endSelectCells(false, false);\n stateManager.updateInteractionState(InteractionState.default);\n // 快速填充\n if (!this.options?.fastFillMode) {\n // 打开自动填充菜单\n openAutoFillMenu(this.tableInstance, endCol, endRow);\n } else {\n this.fillData(this.options.fastFillMode as APPLY_TYPE);\n }\n }\n\n /**\n * 填充数据\n * @param applyType - 填充类型\n */\n fillData(applyType: APPLY_TYPE) {\n console.log('fill data applyType', applyType);\n // 获取源数据\n this.sourceData = this.getSourceData(this.sourceRange, this.direction);\n const location = {\n source: this.sourceRange,\n target: this.targetRange\n };\n\n // 填充数据\n this._fillData(location, this.direction, applyType);\n }\n /**\n * 获取源数据\n * @param source - 源范围\n * @param direction - 方向\n * @returns 源数据\n */\n private getSourceData(source: IDiscreteRange, direction: Direction) {\n const rules = this.autoFillService.getRules();\n const sourceData: ISourceDataPiece[] = [];\n const isVertical = direction === Direction.DOWN || direction === Direction.UP;\n let aArray: number[];\n let bArray: number[];\n if (isVertical) {\n aArray = source.cols;\n bArray = source.rows;\n } else {\n aArray = source.rows;\n bArray = source.cols;\n }\n const matrix = getCellMatrix(this.tableInstance);\n // 按照行或列将源数据分成多个片段,获取单元格数据\n aArray.forEach(a => {\n const sourceDataPiece = this.getEmptySourceDataPiece();\n const prevData: IRuleConfirmedData = {\n type: undefined,\n cellData: undefined\n };\n bArray.forEach(b => {\n let data: Nullable<ICellData>;\n if (isVertical) {\n data = matrix.getValue(b, a);\n } else {\n data = matrix.getValue(a, b);\n }\n // find rules to match data\n const { type, isContinue } = rules.find(r => r.match(data, null)) || otherRule;\n if (isContinue(prevData, data)) {\n const typeInfo = sourceDataPiece[type];\n\n const last = typeInfo![typeInfo!.length - 1];\n last.data.push(data);\n last.index.push(b - bArray[0]);\n } else {\n const typeInfo = sourceDataPiece[type];\n if (typeInfo) {\n typeInfo.push({\n data: [data],\n index: [b - bArray[0]]\n });\n } else {\n sourceDataPiece[type] = [\n {\n data: [data],\n index: [b - bArray[0]]\n }\n ];\n }\n }\n prevData.type = type;\n prevData.cellData = data;\n });\n sourceData.push(sourceDataPiece);\n });\n return sourceData;\n }\n /**\n * 获取空的片段数据对象\n * @returns 空的片段数据对象\n */\n private getEmptySourceDataPiece() {\n const sourceDataPiece: ISourceDataPiece = {};\n this.autoFillService.getRules().forEach(r => {\n sourceDataPiece[r.type] = [];\n });\n\n return sourceDataPiece;\n }\n /**\n * 快速填充检测填充范围\n * @returns 填充范围\n */\n private _detectFillRange() {\n // sourceRange\n const start = { row: Math.min(...this.sourceRange.rows), col: Math.min(...this.sourceRange.cols) };\n const end = { row: Math.max(...this.sourceRange.rows), col: Math.max(...this.sourceRange.cols) };\n // matrix\n const matrix = getCellMatrix(this.tableInstance);\n const maxRow = matrix.getMaxRows();\n const maxColumn = matrix.getMaxColumns();\n let detectEndRow = end.row;\n // left column first, or consider right column.\n if (start.col > 0 && matrix.getValue(start.row, start.col - 1)?.v) {\n let cur = start.row;\n while (matrix.getValue(cur, start.col - 1)?.v && cur <= maxRow) {\n cur += 1;\n }\n detectEndRow = cur - 1;\n } else if (end.col < maxColumn && matrix.getValue(end.row, end.col + 1)?.v) {\n let cur = start.row;\n while (matrix.getValue(cur, end.col + 1)?.v && cur <= maxRow) {\n cur += 1;\n }\n detectEndRow = cur - 1;\n }\n for (let i = end.row + 1; i <= detectEndRow; i++) {\n for (let j = start.col; j <= end.col; j++) {\n if (matrix.getValue(i, j)?.v) {\n detectEndRow = i - 1;\n break;\n }\n }\n }\n return {\n start: { row: start.row, col: start.col },\n end: { row: detectEndRow, col: end.col }\n };\n }\n\n /**\n * 填充数据\n * @param location - 位置\n * @param direction - 方向\n * @param applyType - 填充类型\n */\n private _fillData(location: IAutoFillLocation, direction: Direction, applyType: APPLY_TYPE) {\n const { source, target } = location;\n if (!source || !target || direction == null) {\n return;\n }\n\n const { cols: targetCols, rows: targetRows } = target;\n const { cols: sourceCols, rows: sourceRows } = source;\n\n const sourceData = this.sourceData;\n\n let csLen;\n if (direction === Direction.DOWN || direction === Direction.UP) {\n csLen = sourceRows.length;\n } else {\n csLen = sourceCols.length;\n }\n\n const applyDatas: Array<Array<Nullable<ICellData>>> = [];\n\n if (direction === Direction.DOWN || direction === Direction.UP) {\n const asLen = targetRows.length;\n const untransformedApplyDatas: Nullable<ICellData>[][] = [];\n targetCols.forEach((_, i) => {\n const copyD = sourceData[i];\n const applyData = this.getApplyData(copyD, csLen, asLen, direction, applyType, location);\n untransformedApplyDatas.push(applyData);\n });\n for (let i = 0; i < untransformedApplyDatas[0].length; i++) {\n const row: Array<Nullable<ICellData>> = [];\n for (let j = 0; j < untransformedApplyDatas.length; j++) {\n row.push({\n s: null,\n ...untransformedApplyDatas[j][i]\n });\n }\n applyDatas.push(row);\n }\n } else {\n const asLen = targetCols.length;\n targetRows.forEach((_, i) => {\n const copyD = sourceData[i];\n const applyData = this.getApplyData(copyD, csLen, asLen, direction, applyType, location);\n const row: Array<Nullable<ICellData>> = [];\n for (let j = 0; j < applyData.length; j++) {\n row.push({\n s: null,\n ...applyData[j]\n });\n }\n applyDatas.push(row);\n });\n }\n\n // 获取填充的值\n const values: string[][] = [];\n targetRows.forEach((row, rowIndex) => {\n const rowValues: string[] = [];\n targetCols.forEach((col, colIndex) => {\n // 如果当前单元格是合并单元格,则先进行拆开单元格,再进行填充\n const range = isMergeCell(this.tableInstance, col, row);\n if (range) {\n this.tableInstance.unmergeCells(range.start.col, range.start.row, range.end.col, range.end.row);\n }\n // 填充数据存入rowValues,再一次性填充到表格中\n if (applyDatas[rowIndex][colIndex]) {\n rowValues.push(applyDatas[rowIndex][colIndex]!.v + '');\n }\n });\n values.push(rowValues);\n });\n // 获取填充开始的行和列,设置表格值\n const minRow = Math.min(...targetRows);\n const minCol = Math.min(...targetCols);\n this.tableInstance.changeCellValues(minCol, minRow, values);\n }\n\n /**\n * 根据源数据计算填充数据\n * @param sourceDataPiece - 源数据片段\n * @param csLen - 源长度\n * @param asLen - 目标长度\n * @param direction - 方向\n * @param applyType - 填充类型\n * @param location - 位置\n * @returns 填充数据\n */\n private getApplyData(\n sourceDataPiece: ISourceDataPiece,\n csLen: number,\n asLen: number,\n direction: Direction,\n applyType: APPLY_TYPE,\n location: IAutoFillLocation\n ) {\n const applyData: Array<Nullable<ICellData>> = [];\n const num = Math.floor(asLen / csLen);\n const rsd = asLen % csLen;\n const rules = this.autoFillService.getRules();\n\n const applyDataInTypes: { [key: string]: any[] } = {};\n\n rules.forEach(r => {\n applyDataInTypes[r.type] = [];\n });\n\n // calc cell data to apply\n rules.forEach(r => {\n const { type, applyFunctions: customApplyFunctions = {} } = r;\n const copyDataInType = sourceDataPiece[type];\n if (!copyDataInType) {\n return;\n }\n // copyDataInType is an array of copy-squads in same types\n // a copy-squad is an array of continuous cells that has the same type, e.g. [1, 3, 5] is a copy squad, but [1, 3, ab, 5] will be divided into two copy-squads\n copyDataInType.forEach(copySquad => {\n const s = getLenS(copySquad.index, rsd);\n const len = copySquad.index.length * num + s;\n\n // We do not process cell.custom by default. If the user needs to process it, they can do so in the hook extension.\n const arrData = this.applyFunctions(\n copySquad,\n len,\n direction,\n applyType,\n customApplyFunctions,\n sourceDataPiece,\n location\n );\n\n const arrIndex = getDataIndex(csLen, asLen, copySquad.index);\n applyDataInTypes[type].push({ data: arrData, index: arrIndex });\n });\n });\n\n // calc index\n for (let x = 0; x < asLen; x++) {\n rules.forEach(r => {\n const { type } = r;\n const applyDataInType = applyDataInTypes[type];\n for (let y = 0; y < applyDataInType.length; y++) {\n if (x in applyDataInType[y].index) {\n applyData.push(applyDataInType[y].data[applyDataInType[y].index[x]]);\n }\n }\n });\n }\n\n return applyData;\n }\n /**\n * 根据规则计算填充函数\n * @param copySquad - 复制数据\n * @param len - 长度\n * @param direction - 方向\n * @param applyType - 填充类型\n * @param customApplyFunctions - 自定义应用函数\n * @param sourceDataPiece - 源数据片段\n * @param location - 位置\n * @returns 填充数据\n */\n private applyFunctions(\n copySquad: ICopyDataInType,\n len: number,\n direction: Direction,\n applyType: APPLY_TYPE,\n customApplyFunctions: APPLY_FUNCTIONS,\n sourceDataPiece: ISourceDataPiece,\n location: IAutoFillLocation\n ) {\n const { data } = copySquad;\n const isReverse = direction === Direction.UP || direction === Direction.LEFT;\n\n // 复制填充\n if (applyType === APPLY_TYPE.COPY) {\n const custom = customApplyFunctions?.[APPLY_TYPE.COPY];\n if (custom) {\n return custom(copySquad, len, direction, sourceDataPiece, location);\n }\n isReverse && data.reverse();\n return fillCopy(data, len);\n }\n // 序列填充\n if (applyType === APPLY_TYPE.SERIES) {\n const custom = customApplyFunctions?.[APPLY_TYPE.SERIES];\n if (custom) {\n return custom(copySquad, len, direction, sourceDataPiece);\n }\n isReverse && data.reverse();\n // special rules, if not provide custom SERIES apply functions, will be applied as copy\n if (customApplyFunctions?.[APPLY_TYPE.COPY]) {\n return customApplyFunctions[APPLY_TYPE.COPY](copySquad, len, direction, sourceDataPiece, location);\n }\n return fillCopy(data, len);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/auto-fill/auto-fill-manager.ts"],"names":[],"mappings":"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","file":"auto-fill-manager.js","sourcesContent":["/**\n * Copyright 2023-present DreamNum Co., Ltd.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Direction, APPLY_TYPE, CellValueType } from './types';\nimport type {\n ISourceDataPiece,\n ICellData,\n Nullable,\n IRuleConfirmedData,\n IDiscreteRange,\n IAutoFillLocation\n} from './types';\nimport { AutoFillService } from './auto-fill-services';\nimport { otherRule } from './rules';\nimport { fillCopy, getDataIndex, getLenS } from './utils/fill';\nimport type { ICopyDataInType } from './utils/fill';\nimport type { APPLY_FUNCTIONS } from './types';\nimport type { CellRange } from '@visactor/vtable/es/ts-types/table-engine';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { ListTable } from '@visactor/vtable';\nimport {\n getSelectedRangeArray,\n getTargetRange,\n openAutoFillMenu,\n getCellMatrix,\n isMergeCell\n} from './auto-fill-helper';\nimport type { IAutoFillPluginOptions } from '.';\nimport { InteractionState } from '@visactor/vtable/es/ts-types';\nexport class AutoFillManager {\n // 源数据\n private sourceData: ISourceDataPiece[] = [];\n // autoFillService 维护规则列表\n private autoFillService: AutoFillService;\n // 表格实例\n private tableInstance: ListTable;\n // 源范围\n private sourceRange: IDiscreteRange;\n // 目标范围\n private targetRange: IDiscreteRange;\n // 填充方向\n private direction: Direction;\n // 行列头\n private headers: {\n row: Set<number>;\n col: Set<number>;\n };\n\n private options?: IAutoFillPluginOptions;\n\n constructor(options?: IAutoFillPluginOptions) {\n this.options = options;\n this.autoFillService = new AutoFillService();\n }\n\n setTable(table: ListTable) {\n this.headers = {\n row: new Set(),\n col: new Set()\n };\n this.tableInstance = table;\n table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, (args: any) => {\n if (args.text === '复制填充') {\n this.fillData(APPLY_TYPE.COPY);\n } else if (args.text === '序列填充') {\n this.fillData(APPLY_TYPE.SERIES);\n }\n });\n\n //cal headers\n const rowHeaderCells = this.tableInstance.getAllRowHeaderCells()[0];\n if (rowHeaderCells) {\n rowHeaderCells.forEach(cell => {\n this.headers.col.add(cell.col);\n });\n }\n const colHeaderCells = this.tableInstance.getAllColumnHeaderCells()[0];\n if (colHeaderCells) {\n colHeaderCells.forEach(cell => {\n this.headers.row.add(cell.row);\n });\n }\n }\n\n // 开始拖拽\n handleStartDrag(selectedRange: CellRange) {\n this.sourceRange = getSelectedRangeArray(selectedRange);\n this.sourceRange.cols = this.sourceRange.cols.filter(col => !this.headers.col.has(col));\n this.sourceRange.rows = this.sourceRange.rows.filter(row => !this.headers.row.has(row));\n }\n // 结束拖拽\n handleEndDrag(endSelectCellRange: CellRange, direction: string) {\n // set direction\n this.direction = direction as Direction;\n // set target range\n const selectedRange = getSelectedRangeArray(endSelectCellRange);\n this.targetRange = getTargetRange(this.direction, this.sourceRange, selectedRange);\n this.targetRange.cols = this.targetRange.cols.filter(col => !this.headers.col.has(col));\n this.targetRange.rows = this.targetRange.rows.filter(row => !this.headers.row.has(row));\n // open auto fill menu\n if (!this.options?.fillMode) {\n openAutoFillMenu(this.tableInstance, Math.max(...selectedRange.cols), Math.max(...selectedRange.rows));\n } else {\n this.fillData(this.options.fillMode as APPLY_TYPE);\n }\n }\n\n handleDbClick() {\n if (!this.sourceRange) {\n return;\n }\n this.direction = Direction.DOWN;\n // 双击填充时,自动检测填充范围\n const detectFillRange = getSelectedRangeArray(this._detectFillRange());\n this.targetRange = getTargetRange(this.direction, this.sourceRange, detectFillRange);\n this.targetRange.cols = this.targetRange.cols.filter(col => !this.headers.col.has(col));\n this.targetRange.rows = this.targetRange.rows.filter(row => !this.headers.row.has(row));\n if (this.targetRange.cols.length === 0 || this.targetRange.rows.length === 0) {\n return;\n }\n const startCol = this.sourceRange.cols[0];\n const startRow = this.sourceRange.rows[0];\n const endCol = this.targetRange.cols[this.targetRange.cols.length - 1];\n const endRow = this.targetRange.rows[this.targetRange.rows.length - 1];\n // 更新选区\n const stateManager = this.tableInstance.stateManager;\n stateManager.updateSelectPos(startCol, startRow, false, false, false, true, true);\n stateManager.updateInteractionState(InteractionState.grabing);\n stateManager.updateSelectPos(endCol, endRow, false, false, false, true, true);\n stateManager.endSelectCells(false, false);\n stateManager.updateInteractionState(InteractionState.default);\n // 快速填充\n if (!this.options?.fastFillMode) {\n // 打开自动填充菜单\n openAutoFillMenu(this.tableInstance, endCol, endRow);\n } else {\n this.fillData(this.options.fastFillMode as APPLY_TYPE);\n }\n }\n\n /**\n * 填充数据\n * @param applyType - 填充类型\n */\n fillData(applyType: APPLY_TYPE) {\n console.log('fill data applyType', applyType);\n // 获取源数据\n this.sourceData = this.getSourceData(this.sourceRange, this.direction);\n const location = {\n source: this.sourceRange,\n target: this.targetRange\n };\n\n // 填充数据\n this._fillData(location, this.direction, applyType);\n }\n /**\n * 获取源数据\n * @param source - 源范围\n * @param direction - 方向\n * @returns 源数据\n */\n private getSourceData(source: IDiscreteRange, direction: Direction) {\n const rules = this.autoFillService.getRules();\n const sourceData: ISourceDataPiece[] = [];\n const isVertical = direction === Direction.DOWN || direction === Direction.UP;\n let aArray: number[];\n let bArray: number[];\n if (isVertical) {\n aArray = source.cols;\n bArray = source.rows;\n } else {\n aArray = source.rows;\n bArray = source.cols;\n }\n const matrix = getCellMatrix(this.tableInstance);\n // 按照行或列将源数据分成多个片段,获取单元格数据\n aArray.forEach(a => {\n const sourceDataPiece = this.getEmptySourceDataPiece();\n const prevData: IRuleConfirmedData = {\n type: undefined,\n cellData: undefined\n };\n bArray.forEach(b => {\n let data: Nullable<ICellData>;\n if (isVertical) {\n data = matrix.getValue(b, a);\n } else {\n data = matrix.getValue(a, b);\n }\n // find rules to match data\n const { type, isContinue } = rules.find(r => r.match(data, null)) || otherRule;\n if (isContinue(prevData, data)) {\n const typeInfo = sourceDataPiece[type];\n\n const last = typeInfo![typeInfo!.length - 1];\n last.data.push(data);\n last.index.push(b - bArray[0]);\n } else {\n const typeInfo = sourceDataPiece[type];\n if (typeInfo) {\n typeInfo.push({\n data: [data],\n index: [b - bArray[0]]\n });\n } else {\n sourceDataPiece[type] = [\n {\n data: [data],\n index: [b - bArray[0]]\n }\n ];\n }\n }\n prevData.type = type;\n prevData.cellData = data;\n });\n sourceData.push(sourceDataPiece);\n });\n return sourceData;\n }\n /**\n * 获取空的片段数据对象\n * @returns 空的片段数据对象\n */\n private getEmptySourceDataPiece() {\n const sourceDataPiece: ISourceDataPiece = {};\n this.autoFillService.getRules().forEach(r => {\n sourceDataPiece[r.type] = [];\n });\n\n return sourceDataPiece;\n }\n /**\n * 快速填充检测填充范围\n * @returns 填充范围\n */\n private _detectFillRange() {\n // sourceRange\n const start = { row: Math.min(...this.sourceRange.rows), col: Math.min(...this.sourceRange.cols) };\n const end = { row: Math.max(...this.sourceRange.rows), col: Math.max(...this.sourceRange.cols) };\n // matrix\n const matrix = getCellMatrix(this.tableInstance);\n const maxRow = matrix.getMaxRows();\n const maxColumn = matrix.getMaxColumns();\n let detectEndRow = end.row;\n // left column first, or consider right column.\n if (start.col > 0 && matrix.getValue(start.row, start.col - 1)?.v) {\n let cur = start.row;\n while (matrix.getValue(cur, start.col - 1)?.v && cur <= maxRow) {\n cur += 1;\n }\n detectEndRow = cur - 1;\n } else if (end.col < maxColumn && matrix.getValue(end.row, end.col + 1)?.v) {\n let cur = start.row;\n while (matrix.getValue(cur, end.col + 1)?.v && cur <= maxRow) {\n cur += 1;\n }\n detectEndRow = cur - 1;\n }\n for (let i = end.row + 1; i <= detectEndRow; i++) {\n for (let j = start.col; j <= end.col; j++) {\n if (matrix.getValue(i, j)?.v) {\n detectEndRow = i - 1;\n break;\n }\n }\n }\n return {\n start: { row: start.row, col: start.col },\n end: { row: detectEndRow, col: end.col }\n };\n }\n\n /**\n * 填充数据\n * @param location - 位置\n * @param direction - 方向\n * @param applyType - 填充类型\n */\n private _fillData(location: IAutoFillLocation, direction: Direction, applyType: APPLY_TYPE) {\n const { source, target } = location;\n if (!source || !target || direction == null) {\n return;\n }\n\n const { cols: targetCols, rows: targetRows } = target;\n const { cols: sourceCols, rows: sourceRows } = source;\n\n const sourceData = this.sourceData;\n\n let csLen: number;\n if (direction === Direction.DOWN || direction === Direction.UP) {\n csLen = sourceRows.length;\n } else {\n csLen = sourceCols.length;\n }\n\n const applyDatas: Array<Array<Nullable<ICellData>>> = [];\n\n if (direction === Direction.DOWN || direction === Direction.UP) {\n const asLen = targetRows.length;\n const untransformedApplyDatas: Nullable<ICellData>[][] = [];\n targetCols.forEach((_, i) => {\n const copyD = sourceData[i];\n const applyData = this.getApplyData(copyD, csLen, asLen, direction, applyType, location);\n untransformedApplyDatas.push(applyData);\n });\n for (let i = 0; i < untransformedApplyDatas[0].length; i++) {\n const row: Array<Nullable<ICellData>> = [];\n for (let j = 0; j < untransformedApplyDatas.length; j++) {\n row.push(untransformedApplyDatas[j][i]);\n }\n applyDatas.push(row);\n }\n } else {\n const asLen = targetCols.length;\n targetRows.forEach((_, i) => {\n const copyD = sourceData[i];\n const applyData = this.getApplyData(copyD, csLen, asLen, direction, applyType, location);\n const row: Array<Nullable<ICellData>> = [];\n for (let j = 0; j < applyData.length; j++) {\n row.push(applyData[j]);\n }\n applyDatas.push(row);\n });\n }\n\n // 获取填充的值\n const values: string[][] = [];\n targetRows.forEach((row, rowIndex) => {\n const rowValues: string[] = [];\n targetCols.forEach((col, colIndex) => {\n // 如果当前单元格是合并单元格,则先进行拆开单元格,再进行填充\n const range = isMergeCell(this.tableInstance, col, row);\n if (range) {\n this.tableInstance.unmergeCells(range.start.col, range.start.row, range.end.col, range.end.row);\n }\n // 填充数据存入rowValues,再一次性填充到表格中\n if (applyDatas[rowIndex][colIndex]) {\n rowValues.push((applyDatas[rowIndex][colIndex] as any)?.v + '');\n }\n });\n values.push(rowValues);\n });\n // 获取填充开始的行和列,设置表格值\n const minRow = Math.min(...targetRows);\n const minCol = Math.min(...targetCols);\n this.tableInstance.changeCellValues(minCol, minRow, values);\n }\n\n /**\n * 根据源数据计算填充数据\n * @param sourceDataPiece - 源数据片段\n * @param csLen - 源长度\n * @param asLen - 目标长度\n * @param direction - 方向\n * @param applyType - 填充类型\n * @param location - 位置\n * @returns 填充数据\n */\n private getApplyData(\n sourceDataPiece: ISourceDataPiece,\n csLen: number,\n asLen: number,\n direction: Direction,\n applyType: APPLY_TYPE,\n location: IAutoFillLocation\n ) {\n const applyData: Array<Nullable<ICellData>> = [];\n const num = Math.floor(asLen / csLen);\n const rsd = asLen % csLen;\n const rules = this.autoFillService.getRules();\n\n const applyDataInTypes: { [key: string]: any[] } = {};\n\n rules.forEach(r => {\n applyDataInTypes[r.type] = [];\n });\n\n // calc cell data to apply\n rules.forEach(r => {\n const { type, applyFunctions: customApplyFunctions = {} } = r;\n const copyDataInType = sourceDataPiece[type];\n if (!copyDataInType) {\n return;\n }\n // copyDataInType is an array of copy-squads in same types\n // a copy-squad is an array of continuous cells that has the same type, e.g. [1, 3, 5] is a copy squad, but [1, 3, ab, 5] will be divided into two copy-squads\n copyDataInType.forEach(copySquad => {\n const s = getLenS(copySquad.index, rsd);\n const len = copySquad.index.length * num + s;\n\n // We do not process cell.custom by default. If the user needs to process it, they can do so in the hook extension.\n const arrData = this.applyFunctions(\n copySquad,\n len,\n direction,\n applyType,\n customApplyFunctions,\n sourceDataPiece,\n location\n );\n\n const arrIndex = getDataIndex(csLen, asLen, copySquad.index);\n applyDataInTypes[type].push({ data: arrData, index: arrIndex });\n });\n });\n\n // calc index\n for (let x = 0; x < asLen; x++) {\n rules.forEach(r => {\n const { type } = r;\n const applyDataInType = applyDataInTypes[type];\n for (let y = 0; y < applyDataInType.length; y++) {\n if (x in applyDataInType[y].index) {\n applyData.push(applyDataInType[y].data[applyDataInType[y].index[x]]);\n }\n }\n });\n }\n\n return applyData;\n }\n /**\n * 根据规则计算填充函数\n * @param copySquad - 复制数据\n * @param len - 长度\n * @param direction - 方向\n * @param applyType - 填充类型\n * @param customApplyFunctions - 自定义应用函数\n * @param sourceDataPiece - 源数据片段\n * @param location - 位置\n * @returns 填充数据\n */\n private applyFunctions(\n copySquad: ICopyDataInType,\n len: number,\n direction: Direction,\n applyType: APPLY_TYPE,\n customApplyFunctions: APPLY_FUNCTIONS,\n sourceDataPiece: ISourceDataPiece,\n location: IAutoFillLocation\n ) {\n const { data } = copySquad;\n const isReverse = direction === Direction.UP || direction === Direction.LEFT;\n\n // 复制填充\n if (applyType === APPLY_TYPE.COPY) {\n const custom = customApplyFunctions?.[APPLY_TYPE.COPY];\n if (custom) {\n return custom(copySquad, len, direction, sourceDataPiece, location);\n }\n isReverse && data.reverse();\n return fillCopy(data, len);\n }\n // 序列填充\n if (applyType === APPLY_TYPE.SERIES) {\n const custom = customApplyFunctions?.[APPLY_TYPE.SERIES];\n if (custom) {\n return custom(copySquad, len, direction, sourceDataPiece);\n }\n isReverse && data.reverse();\n // special rules, if not provide custom SERIES apply functions, will be applied as copy\n if (customApplyFunctions?.[APPLY_TYPE.COPY]) {\n return customApplyFunctions[APPLY_TYPE.COPY](copySquad, len, direction, sourceDataPiece, location);\n }\n return fillCopy(data, len);\n }\n // Default case: return empty array\n return [];\n }\n}\n"]}
@@ -1,21 +1,17 @@
1
- import * as VTable from '@visactor/vtable';
1
+ import type { pluginsDefinition, ListTable, BaseTableAPI } from '@visactor/vtable';
2
2
  import type { TableEvents } from '@visactor/vtable/src/core/TABLE_EVENT_TYPE';
3
3
  export interface IAutoFillPluginOptions {
4
4
  fillMode?: 'copy' | 'series';
5
5
  fastFillMode?: 'copy' | 'series';
6
6
  }
7
- export declare class AutoFillPlugin implements VTable.plugins.IVTablePlugin {
7
+ export declare class AutoFillPlugin implements pluginsDefinition.IVTablePlugin {
8
8
  id: string;
9
9
  name: string;
10
10
  runTime: ("mousedown_fill_handle" | "drag_fill_handle_end" | "dblclick_fill_handle")[];
11
- table: VTable.ListTable;
11
+ table: ListTable;
12
12
  private autoFillManager;
13
13
  constructor(options?: IAutoFillPluginOptions);
14
- run(...args: [
15
- {
16
- direction: string;
17
- },
18
- TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][],
19
- VTable.BaseTableAPI
20
- ]): void;
14
+ run(...args: [{
15
+ direction: string;
16
+ }, TableEvents[keyof TableEvents] | TableEvents[keyof TableEvents][], BaseTableAPI]): void;
21
17
  }
@@ -1,50 +1,25 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
29
4
  value: !0
30
5
  }), exports.AutoFillPlugin = void 0;
31
6
 
32
- const VTable = __importStar(require("@visactor/vtable")), auto_fill_manager_1 = require("./auto-fill-manager");
7
+ const vtable_1 = require("@visactor/vtable"), auto_fill_manager_1 = require("./auto-fill-manager");
33
8
 
34
9
  class AutoFillPlugin {
35
10
  constructor(options) {
36
- this.id = "auto-fill", this.name = "Auto Fill", this.runTime = [ VTable.TABLE_EVENT_TYPE.MOUSEDOWN_FILL_HANDLE, VTable.TABLE_EVENT_TYPE.DRAG_FILL_HANDLE_END, VTable.TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE ],
11
+ this.id = "auto-fill", this.name = "Auto Fill", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.MOUSEDOWN_FILL_HANDLE, vtable_1.TABLE_EVENT_TYPE.DRAG_FILL_HANDLE_END, vtable_1.TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE ],
37
12
  this.autoFillManager = new auto_fill_manager_1.AutoFillManager(options);
38
13
  }
39
14
  run(...args) {
40
15
  var _a, _b;
41
- if (args[1] === VTable.TABLE_EVENT_TYPE.MOUSEDOWN_FILL_HANDLE) {
16
+ if (args[1] === vtable_1.TABLE_EVENT_TYPE.MOUSEDOWN_FILL_HANDLE) {
42
17
  const [_, __, table] = args;
43
18
  this.table = table, this.autoFillManager.setTable(this.table), this.autoFillManager.handleStartDrag(null === (_a = this.table) || void 0 === _a ? void 0 : _a.getSelectedCellRanges()[0]);
44
- } else if (args[1] === VTable.TABLE_EVENT_TYPE.DRAG_FILL_HANDLE_END) {
19
+ } else if (args[1] === vtable_1.TABLE_EVENT_TYPE.DRAG_FILL_HANDLE_END) {
45
20
  const [{direction: direction}] = args;
46
21
  this.autoFillManager.handleEndDrag(null === (_b = this.table) || void 0 === _b ? void 0 : _b.getSelectedCellRanges()[0], direction);
47
- } else args[1] === VTable.TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE && this.autoFillManager.handleDbClick();
22
+ } else args[1] === vtable_1.TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE && this.autoFillManager.handleDbClick();
48
23
  }
49
24
  }
50
25