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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/cjs/add-row-column.d.ts +40 -0
  2. package/cjs/add-row-column.js +217 -0
  3. package/cjs/add-row-column.js.map +1 -0
  4. package/cjs/carousel-animation.js +2 -1
  5. package/cjs/column-series.d.ts +29 -0
  6. package/cjs/column-series.js +76 -0
  7. package/cjs/column-series.js.map +1 -0
  8. package/cjs/excel-edit-cell-keyboard.d.ts +16 -0
  9. package/cjs/excel-edit-cell-keyboard.js +79 -0
  10. package/cjs/excel-edit-cell-keyboard.js.map +1 -0
  11. package/cjs/focus-highlight.d.ts +23 -0
  12. package/cjs/focus-highlight.js +93 -0
  13. package/cjs/focus-highlight.js.map +1 -0
  14. package/cjs/header-highlight.js.map +1 -1
  15. package/cjs/highlight-header-when-select-cell.d.ts +25 -0
  16. package/cjs/highlight-header-when-select-cell.js +111 -0
  17. package/cjs/highlight-header-when-select-cell.js.map +1 -0
  18. package/cjs/index.d.ts +8 -0
  19. package/cjs/index.js +5 -1
  20. package/cjs/index.js.map +1 -1
  21. package/cjs/invert-highlight.js.map +1 -1
  22. package/cjs/row-series.d.ts +15 -0
  23. package/cjs/row-series.js +35 -0
  24. package/cjs/row-series.js.map +1 -0
  25. package/cjs/table-carousel-animation.d.ts +53 -0
  26. package/cjs/table-carousel-animation.js +73 -0
  27. package/cjs/table-carousel-animation.js.map +1 -0
  28. package/cjs/types.d.ts +3 -0
  29. package/cjs/types.js +6 -0
  30. package/cjs/types.js.map +1 -0
  31. package/dist/vtable-plugins.js +2893 -859
  32. package/dist/vtable-plugins.min.js +1 -1
  33. package/es/add-row-column.d.ts +40 -0
  34. package/es/add-row-column.js +184 -0
  35. package/es/add-row-column.js.map +1 -0
  36. package/es/carousel-animation.js +2 -1
  37. package/es/column-series.d.ts +29 -0
  38. package/es/column-series.js +43 -0
  39. package/es/column-series.js.map +1 -0
  40. package/es/excel-edit-cell-keyboard.d.ts +16 -0
  41. package/es/excel-edit-cell-keyboard.js +46 -0
  42. package/es/excel-edit-cell-keyboard.js.map +1 -0
  43. package/es/focus-highlight.d.ts +23 -0
  44. package/es/focus-highlight.js +91 -0
  45. package/es/focus-highlight.js.map +1 -0
  46. package/es/header-highlight.js.map +1 -1
  47. package/es/highlight-header-when-select-cell.d.ts +25 -0
  48. package/es/highlight-header-when-select-cell.js +103 -0
  49. package/es/highlight-header-when-select-cell.js.map +1 -0
  50. package/es/index.d.ts +8 -0
  51. package/es/index.js +16 -0
  52. package/es/index.js.map +1 -1
  53. package/es/invert-highlight.js.map +1 -1
  54. package/es/row-series.d.ts +15 -0
  55. package/es/row-series.js +27 -0
  56. package/es/row-series.js.map +1 -0
  57. package/es/table-carousel-animation.d.ts +53 -0
  58. package/es/table-carousel-animation.js +65 -0
  59. package/es/table-carousel-animation.js.map +1 -0
  60. package/es/types.d.ts +3 -0
  61. package/es/types.js +2 -0
  62. package/es/types.js.map +1 -0
  63. package/package.json +7 -7
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.FocusHighlightPlugin = void 0;
6
+
7
+ const vrender_1 = require("@visactor/vtable/es/vrender"), cell_range_1 = require("@visactor/vtable/es/tools/cell-range"), helper_1 = require("@visactor/vtable/es/tools/helper"), vtable_1 = require("@visactor/vtable");
8
+
9
+ class FocusHighlightPlugin {
10
+ constructor(options = {
11
+ fill: "#000",
12
+ opacity: .5,
13
+ highlightRange: void 0
14
+ }) {
15
+ this.id = "focus-highlight", this.name = "Focus Highlight", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR ],
16
+ this.pluginOptions = Object.assign({
17
+ fill: "#000",
18
+ opacity: .5
19
+ }, options);
20
+ }
21
+ run(...args) {
22
+ if (this.table || (this.table = args[2]), args[1] === vtable_1.TABLE_EVENT_TYPE.INITIALIZED) this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange); else if (args[1] === vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL) {
23
+ const posCell = this.table.stateManager.select.cellPos;
24
+ if (this.table.isHeader(posCell.col, posCell.row)) this.setFocusHighlightRange(void 0); else {
25
+ const ranges = this.table.stateManager.select.ranges, min_col = 0, max_col = this.table.colCount - 1, min_row = Math.min(ranges[0].start.row, ranges[0].end.row), max_row = Math.max(ranges[0].start.row, ranges[0].end.row);
26
+ this.setFocusHighlightRange({
27
+ start: {
28
+ col: min_col,
29
+ row: min_row
30
+ },
31
+ end: {
32
+ col: max_col,
33
+ row: max_row
34
+ }
35
+ });
36
+ }
37
+ } else args[1] === vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR && this.setFocusHighlightRange(void 0);
38
+ }
39
+ setFocusHighlightRange(range) {
40
+ let cellRange;
41
+ range && "start" in range && "end" in range ? cellRange = range : range && (cellRange = {
42
+ start: range,
43
+ end: range
44
+ }), (0, cell_range_1.isSameRange)(this.range, cellRange) || (this.range = cellRange,
45
+ range ? this.updateCellGroupShadow() : this.deleteAllCellGroupShadow(), this.table.scenegraph.updateNextFrame());
46
+ }
47
+ deleteAllCellGroupShadow() {
48
+ this.table.isPivotTable() || (this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup),
49
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup)),
50
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup), this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup),
51
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup),
52
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);
53
+ }
54
+ updateCellGroupShadow() {
55
+ this.table.isPivotTable() || (this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range),
56
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range)),
57
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range),
58
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range),
59
+ this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup),
60
+ this.range, this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);
61
+ }
62
+ updateCellGroupShadowInContainer(container, range) {
63
+ let cellRange;
64
+ range && "start" in range && "end" in range ? cellRange = range : range && (cellRange = {
65
+ start: range,
66
+ end: range
67
+ }), container.forEachChildrenSkipChild((item => {
68
+ const column = item;
69
+ "column" === column.role && column.forEachChildrenSkipChild((item => {
70
+ const cell = item;
71
+ if ("cell" !== cell.role) return;
72
+ cell.attachShadow(cell.shadowRoot);
73
+ const shadowGroup = cell.shadowRoot;
74
+ if (cellRange) {
75
+ if ((0, helper_1.cellInRange)(cellRange, cell.col, cell.row)) shadowGroup.removeAllChild(); else if (!shadowGroup.firstChild) {
76
+ const shadowRect = (0, vrender_1.createRect)({
77
+ x: 0,
78
+ y: 0,
79
+ width: cell.attribute.width,
80
+ height: cell.attribute.height,
81
+ fill: this.pluginOptions.fill,
82
+ opacity: this.pluginOptions.opacity
83
+ });
84
+ shadowRect.name = "shadow-rect", shadowGroup.appendChild(shadowRect);
85
+ }
86
+ } else shadowGroup.removeAllChild();
87
+ }));
88
+ }));
89
+ }
90
+ }
91
+
92
+ exports.FocusHighlightPlugin = FocusHighlightPlugin;
93
+ //# sourceMappingURL=focus-highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus-highlight.ts"],"names":[],"mappings":"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","file":"focus-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellAddress, CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type * as VTable from '@visactor/vtable';\nexport interface FocusHighlightPluginOptions {\n fill?: string;\n opacity?: number;\n highlightRange?: CellAddress | CellRange; //初始化聚焦高亮范围\n}\n\nexport class FocusHighlightPlugin implements VTable.plugins.IVTablePlugin {\n id = 'focus-highlight';\n name = 'Focus Highlight';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.SELECTED_CELL, TABLE_EVENT_TYPE.SELECTED_CLEAR];\n table: BaseTableAPI;\n range?: CellRange;\n pluginOptions: FocusHighlightPluginOptions;\n\n constructor(\n options: FocusHighlightPluginOptions = {\n fill: '#000',\n opacity: 0.5,\n highlightRange: undefined\n }\n ) {\n this.pluginOptions = Object.assign(\n {\n fill: '#000',\n opacity: 0.5\n },\n options\n );\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n if (args[1] === TABLE_EVENT_TYPE.INITIALIZED) {\n this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange);\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CELL) {\n const posCell = this.table.stateManager.select.cellPos;\n if (this.table.isHeader(posCell.col, posCell.row)) {\n this.setFocusHighlightRange(undefined);\n } else {\n const ranges = this.table.stateManager.select.ranges;\n const min_col = 0;\n const max_col = this.table.colCount - 1;\n const min_row = Math.min(ranges[0].start.row, ranges[0].end.row);\n const max_row = Math.max(ranges[0].start.row, ranges[0].end.row);\n this.setFocusHighlightRange({\n start: { col: min_col, row: min_row },\n end: { col: max_col, row: max_row }\n });\n }\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.setFocusHighlightRange(undefined);\n }\n }\n\n setFocusHighlightRange(range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range as CellRange;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n if (isSameRange(this.range, cellRange)) {\n return;\n }\n\n this.range = cellRange;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!cellRange) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(cellRange, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this.pluginOptions.fill,\n opacity: this.pluginOptions.opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["header-highlight.ts"],"names":[],"mappings":"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","file":"header-highlight.js","sourcesContent":["import type { CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\n\nexport interface IHeaderHighlightPluginOptions {\n rowHighlight?: boolean;\n colHighlight?: boolean;\n colHighlightBGColor?: string;\n colHighlightColor?: string;\n rowHighlightBGColor?: string;\n rowHighlightColor?: string;\n}\n\nexport class HeaderHighlightPlugin {\n table: BaseTableAPI;\n options: IHeaderHighlightPluginOptions;\n colHeaderRange?: CellRange;\n rowHeaderRange?: CellRange;\n constructor(table: BaseTableAPI, options?: IHeaderHighlightPluginOptions) {\n this.table = table;\n this.options = options;\n\n this.registerStyle();\n this.bindEvent();\n }\n\n registerStyle() {\n this.table.registerCustomCellStyle('col-highlight', {\n bgColor: this.options?.colHighlightBGColor ?? '#82b2f5',\n color: this.options?.colHighlightColor ?? '#FFF'\n });\n\n this.table.registerCustomCellStyle('row-highlight', {\n bgColor: this.options?.rowHighlightBGColor ?? '#82b2f5',\n color: this.options?.rowHighlightColor ?? '#FFF'\n });\n }\n\n bindEvent() {\n this.table.on('selected_cell', () => {\n this.updateHighlight();\n });\n\n this.table.on('selected_clear', () => {\n this.clearHighlight();\n });\n\n this.table.on('mousemove_table', () => {\n if (this.table.stateManager.select.selecting) {\n this.updateHighlight();\n }\n });\n }\n\n clearHighlight() {\n this.colHeaderRange && this.table.arrangeCustomCellStyle({ range: this.colHeaderRange }, undefined, true);\n this.rowHeaderRange && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRange }, undefined, true);\n\n // clear range\n this.colHeaderRange = undefined;\n this.rowHeaderRange = undefined;\n }\n\n updateHighlight() {\n if (this.options?.colHighlight === false && this.options?.rowHighlight === false) {\n return;\n }\n const selectRanges = this.table.getSelectedCellRanges();\n if (selectRanges.length === 0) {\n this.clearHighlight();\n return;\n }\n\n const selectRange = selectRanges[0];\n const rowSelectRange = [selectRange.start.row, selectRange.end.row];\n rowSelectRange.sort((a, b) => a - b); // sort\n const colSelectRange = [selectRange.start.col, selectRange.end.col];\n colSelectRange.sort((a, b) => a - b); // sort\n\n let colHeaderRange: CellRange;\n let rowHeaderRange: CellRange;\n if (this.table.isPivotTable()) {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else if (this.table.internalProps.transpose) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n if (this.table.internalProps.rowSeriesNumber) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: 0,\n row: rowSelectRange[1]\n }\n };\n }\n }\n\n if (this.options?.colHighlight !== false && !isSameRange(this.colHeaderRange, colHeaderRange)) {\n this.colHeaderRange && this.table.arrangeCustomCellStyle({ range: this.colHeaderRange }, undefined);\n colHeaderRange && this.table.arrangeCustomCellStyle({ range: colHeaderRange }, 'col-highlight');\n this.colHeaderRange = colHeaderRange;\n }\n\n if (this.options?.rowHighlight !== false && !isSameRange(this.rowHeaderRange, rowHeaderRange)) {\n this.rowHeaderRange && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRange }, undefined);\n rowHeaderRange && this.table.arrangeCustomCellStyle({ range: rowHeaderRange }, 'row-highlight');\n this.rowHeaderRange = rowHeaderRange;\n }\n }\n}\n\nfunction isSameRange(a: CellRange | undefined, b: CellRange | undefined) {\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n return (\n a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row\n );\n}\n"]}
1
+ {"version":3,"sources":["header-highlight.ts"],"names":[],"mappings":"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","file":"header-highlight.js","sourcesContent":["import type { CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\n\nexport interface IHeaderHighlightPluginOptions {\n rowHighlight?: boolean;\n colHighlight?: boolean;\n colHighlightBGColor?: string;\n colHighlightColor?: string;\n rowHighlightBGColor?: string;\n rowHighlightColor?: string;\n}\n\n/**\n * @deprecated 请使用 HighlightHeaderPlugin 插件\n */\nexport class HeaderHighlightPlugin {\n table: BaseTableAPI;\n options: IHeaderHighlightPluginOptions;\n colHeaderRange?: CellRange;\n rowHeaderRange?: CellRange;\n constructor(table: BaseTableAPI, options?: IHeaderHighlightPluginOptions) {\n this.table = table;\n this.options = options;\n\n this.registerStyle();\n this.bindEvent();\n }\n\n registerStyle() {\n this.table.registerCustomCellStyle('col-highlight', {\n bgColor: this.options?.colHighlightBGColor ?? '#82b2f5',\n color: this.options?.colHighlightColor ?? '#FFF'\n });\n\n this.table.registerCustomCellStyle('row-highlight', {\n bgColor: this.options?.rowHighlightBGColor ?? '#82b2f5',\n color: this.options?.rowHighlightColor ?? '#FFF'\n });\n }\n\n bindEvent() {\n this.table.on('selected_cell', () => {\n this.updateHighlight();\n });\n\n this.table.on('selected_clear', () => {\n this.clearHighlight();\n });\n\n this.table.on('mousemove_table', () => {\n if (this.table.stateManager.select.selecting) {\n this.updateHighlight();\n }\n });\n }\n\n clearHighlight() {\n this.colHeaderRange && this.table.arrangeCustomCellStyle({ range: this.colHeaderRange }, undefined, true);\n this.rowHeaderRange && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRange }, undefined, true);\n\n // clear range\n this.colHeaderRange = undefined;\n this.rowHeaderRange = undefined;\n }\n\n updateHighlight() {\n if (this.options?.colHighlight === false && this.options?.rowHighlight === false) {\n return;\n }\n const selectRanges = this.table.getSelectedCellRanges();\n if (selectRanges.length === 0) {\n this.clearHighlight();\n return;\n }\n\n const selectRange = selectRanges[0];\n const rowSelectRange = [selectRange.start.row, selectRange.end.row];\n rowSelectRange.sort((a, b) => a - b); // sort\n const colSelectRange = [selectRange.start.col, selectRange.end.col];\n colSelectRange.sort((a, b) => a - b); // sort\n\n let colHeaderRange: CellRange;\n let rowHeaderRange: CellRange;\n if (this.table.isPivotTable()) {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else if (this.table.internalProps.transpose) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n if (this.table.internalProps.rowSeriesNumber) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: 0,\n row: rowSelectRange[1]\n }\n };\n }\n }\n\n if (this.options?.colHighlight !== false && !isSameRange(this.colHeaderRange, colHeaderRange)) {\n this.colHeaderRange && this.table.arrangeCustomCellStyle({ range: this.colHeaderRange }, undefined);\n colHeaderRange && this.table.arrangeCustomCellStyle({ range: colHeaderRange }, 'col-highlight');\n this.colHeaderRange = colHeaderRange;\n }\n\n if (this.options?.rowHighlight !== false && !isSameRange(this.rowHeaderRange, rowHeaderRange)) {\n this.rowHeaderRange && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRange }, undefined);\n rowHeaderRange && this.table.arrangeCustomCellStyle({ range: rowHeaderRange }, 'row-highlight');\n this.rowHeaderRange = rowHeaderRange;\n }\n }\n}\n\nfunction isSameRange(a: CellRange | undefined, b: CellRange | undefined) {\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n return (\n a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row\n );\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import type { CellRange } from '@visactor/vtable/es/ts-types';
2
+ import type { BaseTableAPI, plugins } from '@visactor/vtable';
3
+ interface IHighlightHeaderWhenSelectCellPluginOptions {
4
+ rowHighlight?: boolean;
5
+ colHighlight?: boolean;
6
+ colHighlightBGColor?: string;
7
+ colHighlightColor?: string;
8
+ rowHighlightBGColor?: string;
9
+ rowHighlightColor?: string;
10
+ }
11
+ export declare class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTablePlugin {
12
+ id: string;
13
+ runTime: ("selected_cell" | "selected_clear" | "mousemove_table" | "initialized")[];
14
+ table: BaseTableAPI;
15
+ pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions;
16
+ colHeaderRanges: CellRange[];
17
+ rowHeaderRanges: CellRange[];
18
+ constructor(pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions);
19
+ run(...args: any[]): void;
20
+ registerStyle(): void;
21
+ clearHighlight(): void;
22
+ updateHighlight(): void;
23
+ release(): void;
24
+ }
25
+ export {};
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.HighlightHeaderWhenSelectCellPlugin = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class HighlightHeaderWhenSelectCellPlugin {
10
+ constructor(pluginOptions) {
11
+ this.id = "highlight-header-when-select-cell", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED, vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR, vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL, vtable_1.TABLE_EVENT_TYPE.MOUSEMOVE_TABLE ],
12
+ this.colHeaderRanges = [], this.rowHeaderRanges = [], this.pluginOptions = pluginOptions;
13
+ }
14
+ run(...args) {
15
+ const runTime = args[1], table = args[2];
16
+ this.table = table, runTime === vtable_1.TABLE_EVENT_TYPE.SELECTED_CLEAR ? this.clearHighlight() : runTime === vtable_1.TABLE_EVENT_TYPE.SELECTED_CELL || runTime === vtable_1.TABLE_EVENT_TYPE.MOUSEMOVE_TABLE ? this.updateHighlight() : runTime === vtable_1.TABLE_EVENT_TYPE.INITIALIZED && this.registerStyle();
17
+ }
18
+ registerStyle() {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h;
20
+ this.table.registerCustomCellStyle("col-highlight", {
21
+ bgColor: null !== (_b = null === (_a = this.pluginOptions) || void 0 === _a ? void 0 : _a.colHighlightBGColor) && void 0 !== _b ? _b : "#82b2f5",
22
+ color: null !== (_d = null === (_c = this.pluginOptions) || void 0 === _c ? void 0 : _c.colHighlightColor) && void 0 !== _d ? _d : "#FFF"
23
+ }), this.table.registerCustomCellStyle("row-highlight", {
24
+ bgColor: null !== (_f = null === (_e = this.pluginOptions) || void 0 === _e ? void 0 : _e.rowHighlightBGColor) && void 0 !== _f ? _f : "#82b2f5",
25
+ color: null !== (_h = null === (_g = this.pluginOptions) || void 0 === _g ? void 0 : _g.rowHighlightColor) && void 0 !== _h ? _h : "yellow"
26
+ });
27
+ }
28
+ clearHighlight() {
29
+ this.colHeaderRanges && this.colHeaderRanges.forEach((range => {
30
+ this.table.arrangeCustomCellStyle({
31
+ range: range
32
+ }, void 0);
33
+ })), this.rowHeaderRanges && this.rowHeaderRanges.forEach((range => {
34
+ this.table.arrangeCustomCellStyle({
35
+ range: range
36
+ }, void 0);
37
+ })), this.colHeaderRanges = [], this.rowHeaderRanges = [];
38
+ }
39
+ updateHighlight() {
40
+ var _a, _b, _c, _d;
41
+ if (!1 === (null === (_a = this.pluginOptions) || void 0 === _a ? void 0 : _a.colHighlight) && !1 === (null === (_b = this.pluginOptions) || void 0 === _b ? void 0 : _b.rowHighlight)) return;
42
+ const selectRanges = this.table.getSelectedCellRanges();
43
+ selectRanges.length < 2 && this.clearHighlight();
44
+ for (let i = 0; i < selectRanges.length; i++) {
45
+ const selectRange = selectRanges[i], rowSelectRange = [ selectRange.start.row, selectRange.end.row ];
46
+ rowSelectRange.sort(((a, b) => a - b));
47
+ const colSelectRange = [ selectRange.start.col, selectRange.end.col ];
48
+ let colHeaderRange, rowHeaderRange;
49
+ colSelectRange.sort(((a, b) => a - b)), this.table.isPivotTable() ? (colHeaderRange = {
50
+ start: {
51
+ col: colSelectRange[0],
52
+ row: 0
53
+ },
54
+ end: {
55
+ col: colSelectRange[1],
56
+ row: this.table.columnHeaderLevelCount - 1
57
+ }
58
+ }, rowHeaderRange = {
59
+ start: {
60
+ col: 0,
61
+ row: rowSelectRange[0]
62
+ },
63
+ end: {
64
+ col: this.table.rowHeaderLevelCount - 1,
65
+ row: rowSelectRange[1]
66
+ }
67
+ }) : this.table.internalProps.transpose ? rowHeaderRange = {
68
+ start: {
69
+ col: 0,
70
+ row: rowSelectRange[0]
71
+ },
72
+ end: {
73
+ col: this.table.rowHeaderLevelCount - 1,
74
+ row: rowSelectRange[1]
75
+ }
76
+ } : (colHeaderRange = {
77
+ start: {
78
+ col: colSelectRange[0],
79
+ row: 0
80
+ },
81
+ end: {
82
+ col: colSelectRange[1],
83
+ row: this.table.columnHeaderLevelCount - 1
84
+ }
85
+ }, this.table.internalProps.rowSeriesNumber && (rowHeaderRange = {
86
+ start: {
87
+ col: 0,
88
+ row: rowSelectRange[0]
89
+ },
90
+ end: {
91
+ col: 0,
92
+ row: rowSelectRange[1]
93
+ }
94
+ })), !1 === (null === (_c = this.pluginOptions) || void 0 === _c ? void 0 : _c.colHighlight) || this.colHeaderRanges.find((range => isSameRange(range, colHeaderRange))) || (colHeaderRange && this.table.arrangeCustomCellStyle({
95
+ range: colHeaderRange
96
+ }, "col-highlight"), this.colHeaderRanges.push(colHeaderRange)), !1 === (null === (_d = this.pluginOptions) || void 0 === _d ? void 0 : _d.rowHighlight) || this.rowHeaderRanges.find((range => isSameRange(range, rowHeaderRange))) || (rowHeaderRange && this.table.arrangeCustomCellStyle({
97
+ range: rowHeaderRange
98
+ }, "row-highlight"), this.rowHeaderRanges.push(rowHeaderRange));
99
+ }
100
+ }
101
+ release() {
102
+ this.rowHeaderRanges = [], this.colHeaderRanges = [];
103
+ }
104
+ }
105
+
106
+ function isSameRange(a, b) {
107
+ return void 0 === a && void 0 === b || void 0 !== a && void 0 !== b && (a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row);
108
+ }
109
+
110
+ //# sourceMappingURL=highlight-header-when-select-cell.js.map
111
+ exports.HighlightHeaderWhenSelectCellPlugin = HighlightHeaderWhenSelectCellPlugin;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["highlight-header-when-select-cell.ts"],"names":[],"mappings":"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","file":"highlight-header-when-select-cell.js","sourcesContent":["import type { CellRange } from '@visactor/vtable/es/ts-types';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { BaseTableAPI, plugins } from '@visactor/vtable';\ninterface IHighlightHeaderWhenSelectCellPluginOptions {\n rowHighlight?: boolean;\n colHighlight?: boolean;\n colHighlightBGColor?: string;\n colHighlightColor?: string;\n rowHighlightBGColor?: string;\n rowHighlightColor?: string;\n}\n\nexport class HighlightHeaderWhenSelectCellPlugin implements plugins.IVTablePlugin {\n id = 'highlight-header-when-select-cell';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.SELECTED_CLEAR,\n TABLE_EVENT_TYPE.SELECTED_CELL,\n TABLE_EVENT_TYPE.MOUSEMOVE_TABLE\n ];\n table: BaseTableAPI;\n pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions;\n colHeaderRanges: CellRange[] = [];\n rowHeaderRanges: CellRange[] = [];\n constructor(pluginOptions: IHighlightHeaderWhenSelectCellPluginOptions) {\n this.pluginOptions = pluginOptions;\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;\n if (runTime === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.clearHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.SELECTED_CELL) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.MOUSEMOVE_TABLE) {\n this.updateHighlight();\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED) {\n this.registerStyle();\n }\n }\n\n registerStyle() {\n this.table.registerCustomCellStyle('col-highlight', {\n bgColor: this.pluginOptions?.colHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.colHighlightColor ?? '#FFF'\n });\n\n this.table.registerCustomCellStyle('row-highlight', {\n bgColor: this.pluginOptions?.rowHighlightBGColor ?? '#82b2f5',\n color: this.pluginOptions?.rowHighlightColor ?? 'yellow'\n });\n }\n\n clearHighlight() {\n if (this.colHeaderRanges) {\n this.colHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n if (this.rowHeaderRanges) {\n this.rowHeaderRanges.forEach(range => {\n this.table.arrangeCustomCellStyle({ range }, undefined);\n });\n }\n // clear range\n this.colHeaderRanges = [];\n this.rowHeaderRanges = [];\n }\n\n updateHighlight() {\n if (this.pluginOptions?.colHighlight === false && this.pluginOptions?.rowHighlight === false) {\n return;\n }\n const selectRanges = this.table.getSelectedCellRanges();\n if (selectRanges.length < 2) {\n this.clearHighlight();\n // return;\n }\n for (let i = 0; i < selectRanges.length; i++) {\n const selectRange = selectRanges[i];\n const rowSelectRange = [selectRange.start.row, selectRange.end.row];\n rowSelectRange.sort((a, b) => a - b); // sort\n const colSelectRange = [selectRange.start.col, selectRange.end.col];\n colSelectRange.sort((a, b) => a - b); // sort\n\n let colHeaderRange: CellRange;\n let rowHeaderRange: CellRange;\n if (this.table.isPivotTable()) {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else if (this.table.internalProps.transpose) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: this.table.rowHeaderLevelCount - 1,\n row: rowSelectRange[1]\n }\n };\n } else {\n colHeaderRange = {\n start: {\n col: colSelectRange[0],\n row: 0\n },\n end: {\n col: colSelectRange[1],\n row: this.table.columnHeaderLevelCount - 1\n }\n };\n if (this.table.internalProps.rowSeriesNumber) {\n rowHeaderRange = {\n start: {\n col: 0,\n row: rowSelectRange[0]\n },\n end: {\n col: 0,\n row: rowSelectRange[1]\n }\n };\n }\n }\n\n if (\n this.pluginOptions?.colHighlight !== false &&\n !this.colHeaderRanges.find(range => isSameRange(range, colHeaderRange))\n ) {\n // this.colHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.colHeaderRanges }, undefined);\n colHeaderRange && this.table.arrangeCustomCellStyle({ range: colHeaderRange }, 'col-highlight');\n this.colHeaderRanges.push(colHeaderRange);\n }\n\n if (\n this.pluginOptions?.rowHighlight !== false &&\n !this.rowHeaderRanges.find(range => isSameRange(range, rowHeaderRange))\n ) {\n // this.rowHeaderRanges && this.table.arrangeCustomCellStyle({ range: this.rowHeaderRanges }, undefined);\n rowHeaderRange && this.table.arrangeCustomCellStyle({ range: rowHeaderRange }, 'row-highlight');\n this.rowHeaderRanges.push(rowHeaderRange);\n }\n }\n }\n release() {\n this.rowHeaderRanges = [];\n this.colHeaderRanges = [];\n }\n}\n\nfunction isSameRange(a: CellRange | undefined, b: CellRange | undefined) {\n if (a === undefined && b === undefined) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n return (\n a.start.col === b.start.col && a.start.row === b.start.row && a.end.col === b.end.col && a.end.row === b.end.row\n );\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,3 +1,11 @@
1
1
  export * from './carousel-animation';
2
2
  export * from './invert-highlight';
3
3
  export * from './header-highlight';
4
+ export * from './add-row-column';
5
+ export * from './column-series';
6
+ export * from './row-series';
7
+ export * from './highlight-header-when-select-cell';
8
+ export * from './excel-edit-cell-keyboard';
9
+ export * from './types';
10
+ export * from './focus-highlight';
11
+ export * from './table-carousel-animation';
package/cjs/index.js CHANGED
@@ -18,5 +18,9 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), __exportStar(require("./carousel-animation"), exports), __exportStar(require("./invert-highlight"), exports),
21
- __exportStar(require("./header-highlight"), exports);
21
+ __exportStar(require("./header-highlight"), exports), __exportStar(require("./add-row-column"), exports),
22
+ __exportStar(require("./column-series"), exports), __exportStar(require("./row-series"), exports),
23
+ __exportStar(require("./highlight-header-when-select-cell"), exports), __exportStar(require("./excel-edit-cell-keyboard"), exports),
24
+ __exportStar(require("./types"), exports), __exportStar(require("./focus-highlight"), exports),
25
+ __exportStar(require("./table-carousel-animation"), exports);
22
26
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,qDAAmC;AACnC,qDAAmC","file":"index.js","sourcesContent":["export * from './carousel-animation';\nexport * from './invert-highlight';\nexport * from './header-highlight';\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,kDAAgC;AAChC,+CAA6B;AAC7B,sEAAoD;AACpD,6DAA2C;AAC3C,0CAAwB;AACxB,oDAAkC;AAClC,6DAA2C","file":"index.js","sourcesContent":["export * from './carousel-animation';\nexport * from './invert-highlight';\nexport * from './header-highlight';\nexport * from './add-row-column';\nexport * from './column-series';\nexport * from './row-series';\nexport * from './highlight-header-when-select-cell';\nexport * from './excel-edit-cell-keyboard';\nexport * from './types';\nexport * from './focus-highlight';\nexport * from './table-carousel-animation';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["invert-highlight.ts"],"names":[],"mappings":"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","file":"invert-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\n\nexport interface InvertHighlightPluginOptions {\n fill?: string;\n opacity?: number;\n}\n\nexport class InvertHighlightPlugin {\n table: BaseTableAPI;\n range?: CellRange;\n _fill: string;\n _opacity: number;\n\n constructor(table: BaseTableAPI, options?: InvertHighlightPluginOptions) {\n this.table = table;\n\n this._fill = options?.fill ?? '#000';\n this._opacity = options?.opacity ?? 0.5;\n }\n\n setInvertHighlightRange(range?: CellRange) {\n if (isSameRange(this.range, range)) {\n return;\n }\n\n this.range = range;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellRange) {\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!range) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(range, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this._fill,\n opacity: this._opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["invert-highlight.ts"],"names":[],"mappings":"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","file":"invert-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellRange } from '@visactor/vtable/es/ts-types';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\n\nexport interface InvertHighlightPluginOptions {\n fill?: string;\n opacity?: number;\n}\n\n/**\n * @deprecated 请使用 FocusHighlightPlugin 插件\n */\nexport class InvertHighlightPlugin {\n table: BaseTableAPI;\n range?: CellRange;\n _fill: string;\n _opacity: number;\n\n constructor(table: BaseTableAPI, options?: InvertHighlightPluginOptions) {\n this.table = table;\n\n this._fill = options?.fill ?? '#000';\n this._opacity = options?.opacity ?? 0.5;\n }\n\n setInvertHighlightRange(range?: CellRange) {\n if (isSameRange(this.range, range)) {\n return;\n }\n\n this.range = range;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellRange) {\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!range) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(range, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this._fill,\n opacity: this._opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { TYPES, ListTable, plugins } from '@visactor/vtable';
2
+ export interface RowSeriesOptions {
3
+ rowCount: number;
4
+ fillRowRecord?: (index: number) => any;
5
+ rowSeriesNumber?: TYPES.IRowSeriesNumber;
6
+ autoExtendRow?: boolean;
7
+ }
8
+ export declare class RowSeriesPlugin implements plugins.IVTablePlugin {
9
+ id: string;
10
+ runTime: ("before_keydown" | "before_init")[];
11
+ pluginOptions: RowSeriesOptions;
12
+ table: ListTable;
13
+ constructor(pluginOptions: RowSeriesOptions);
14
+ run(...args: any[]): void;
15
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.RowSeriesPlugin = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class RowSeriesPlugin {
10
+ constructor(pluginOptions) {
11
+ this.id = "row-series", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.BEFORE_INIT, vtable_1.TABLE_EVENT_TYPE.BEFORE_KEYDOWN ],
12
+ this.pluginOptions = Object.assign({
13
+ rowCount: 100,
14
+ autoExtendRow: !0
15
+ }, pluginOptions);
16
+ }
17
+ run(...args) {
18
+ var _a;
19
+ if (args[1] === vtable_1.TABLE_EVENT_TYPE.BEFORE_INIT) {
20
+ const eventArgs = args[0], table = args[2];
21
+ this.table = table;
22
+ const options = eventArgs.options, records = null !== (_a = options.records) && void 0 !== _a ? _a : [];
23
+ for (let i = records.length; i < this.pluginOptions.rowCount; i++) records.push(this.pluginOptions.fillRowRecord ? this.pluginOptions.fillRowRecord(i) : {});
24
+ options.records = records, this.pluginOptions.rowSeriesNumber ? (options.rowSeriesNumber = this.pluginOptions.rowSeriesNumber,
25
+ this.pluginOptions.rowSeriesNumber.width || (options.rowSeriesNumber.width = "auto")) : options.rowSeriesNumber || (options.rowSeriesNumber = {
26
+ width: "auto"
27
+ });
28
+ } else if (args[1] === vtable_1.TABLE_EVENT_TYPE.BEFORE_KEYDOWN) {
29
+ "ArrowDown" === args[0].event.key && this.pluginOptions.autoExtendRow && this.table.stateManager.select.cellPos.row === this.table.rowCount - 1 && this.table.addRecord(this.pluginOptions.fillRowRecord ? this.pluginOptions.fillRowRecord(this.table.rowCount - this.table.columnHeaderLevelCount) : {});
30
+ }
31
+ }
32
+ }
33
+
34
+ exports.RowSeriesPlugin = RowSeriesPlugin;
35
+ //# sourceMappingURL=row-series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["row-series.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAkBpD,MAAa,eAAe;IAM1B,YAAY,aAA+B;QAL3C,OAAE,GAAG,YAAY,CAAC;QAClB,YAAO,GAAG,CAAC,yBAAgB,CAAC,WAAW,EAAE,yBAAgB,CAAC,cAAc,CAAC,CAAC;QAKxE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;IAC5F,CAAC;IACD,GAAG,CAAC,GAAG,IAAW;;QAChB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,yBAAgB,CAAC,WAAW,EAAE;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAiB,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,KAAkB,CAAC;YAChC,MAAM,OAAO,GAAgC,SAAS,CAAC,OAAO,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC;YAEtC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC3F;YACD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;gBACtC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE;oBAC7C,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,MAAM,CAAC;iBACxC;aACF;iBAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBACnC,OAAO,CAAC,eAAe,GAAG;oBACxB,KAAK,EAAE,MAAM;iBACd,CAAC;aACH;SACF;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,yBAAgB,CAAC,cAAc,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1B,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;gBACzB,IACE,IAAI,CAAC,aAAa,CAAC,aAAa;oBAChC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EACtE;oBACC,IAAI,CAAC,KAAmB,CAAC,SAAS,CACjC,IAAI,CAAC,aAAa,CAAC,aAAa;wBAC9B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;wBAC3F,CAAC,CAAC,EAAE,CACP,CAAC;iBACH;aACF;SACF;IACH,CAAC;CACF;AAjDD,0CAiDC","file":"row-series.js","sourcesContent":["import { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type { TYPES, BaseTableAPI, ListTable, ListTableConstructorOptions, plugins } from '@visactor/vtable';\n/**\n * 添加行和列的插件的配置选项\n */\nexport interface RowSeriesOptions {\n rowCount: number;\n fillRowRecord?: (index: number) => any;\n rowSeriesNumber?: TYPES.IRowSeriesNumber;\n /**\n * 是否自动扩展行\n * @default true\n */\n autoExtendRow?: boolean;\n}\n/**\n * 生成行序号标题的插件\n */\nexport class RowSeriesPlugin implements plugins.IVTablePlugin {\n id = 'row-series';\n runTime = [TABLE_EVENT_TYPE.BEFORE_INIT, TABLE_EVENT_TYPE.BEFORE_KEYDOWN];\n pluginOptions: RowSeriesOptions;\n table: ListTable;\n\n constructor(pluginOptions: RowSeriesOptions) {\n this.pluginOptions = Object.assign({ rowCount: 100, autoExtendRow: true }, pluginOptions);\n }\n run(...args: any[]) {\n if (args[1] === TABLE_EVENT_TYPE.BEFORE_INIT) {\n const eventArgs = args[0];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n const options: ListTableConstructorOptions = eventArgs.options;\n const records = options.records ?? [];\n //用空数据将records填充到pluginOptions.rowCount\n for (let i = records.length; i < this.pluginOptions.rowCount; i++) {\n records.push(this.pluginOptions.fillRowRecord ? this.pluginOptions.fillRowRecord(i) : {});\n }\n options.records = records;\n if (this.pluginOptions.rowSeriesNumber) {\n options.rowSeriesNumber = this.pluginOptions.rowSeriesNumber;\n if (!this.pluginOptions.rowSeriesNumber.width) {\n options.rowSeriesNumber.width = 'auto';\n }\n } else if (!options.rowSeriesNumber) {\n options.rowSeriesNumber = {\n width: 'auto'\n };\n }\n } else if (args[1] === TABLE_EVENT_TYPE.BEFORE_KEYDOWN) {\n const eventArgs = args[0];\n\n const e = eventArgs.event;\n if (e.key === 'ArrowDown') {\n if (\n this.pluginOptions.autoExtendRow &&\n this.table.stateManager.select.cellPos.row === this.table.rowCount - 1\n ) {\n (this.table as ListTable).addRecord(\n this.pluginOptions.fillRowRecord\n ? this.pluginOptions.fillRowRecord(this.table.rowCount - this.table.columnHeaderLevelCount)\n : {}\n );\n }\n }\n }\n }\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import type { EasingType } from '@visactor/vtable/es/vrender';
2
+ import type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';
3
+ import type * as VTable from '@visactor/vtable';
4
+ export interface ITableCarouselAnimationPluginOptions {
5
+ rowCount?: number;
6
+ colCount?: number;
7
+ animationDuration?: number;
8
+ animationDelay?: number;
9
+ animationEasing?: EasingType;
10
+ autoPlay?: boolean;
11
+ autoPlayDelay?: number;
12
+ customDistRowFunction?: (row: number, table: BaseTableAPI) => {
13
+ distRow: number;
14
+ animation?: boolean;
15
+ } | undefined;
16
+ customDistColFunction?: (col: number, table: BaseTableAPI) => {
17
+ distCol: number;
18
+ animation?: boolean;
19
+ } | undefined;
20
+ }
21
+ export declare class TableCarouselAnimationPlugin implements VTable.plugins.IVTablePlugin {
22
+ id: string;
23
+ runTime: "initialized"[];
24
+ table: BaseTableAPI;
25
+ rowCount: number;
26
+ colCount: number;
27
+ animationDuration: number;
28
+ animationDelay: number;
29
+ animationEasing: EasingType;
30
+ playing: boolean;
31
+ row: number;
32
+ col: number;
33
+ willUpdateRow: boolean;
34
+ willUpdateCol: boolean;
35
+ autoPlay: boolean;
36
+ autoPlayDelay: number;
37
+ customDistRowFunction?: (row: number, table: BaseTableAPI) => {
38
+ distRow: number;
39
+ animation?: boolean;
40
+ } | undefined;
41
+ customDistColFunction?: (col: number, table: BaseTableAPI) => {
42
+ distCol: number;
43
+ animation?: boolean;
44
+ } | undefined;
45
+ constructor(options?: ITableCarouselAnimationPluginOptions);
46
+ run(...args: any[]): void;
47
+ reset(): void;
48
+ play(): void;
49
+ pause(): void;
50
+ updateRow(): void;
51
+ updateCol(): void;
52
+ release(): void;
53
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.TableCarouselAnimationPlugin = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ function isInteger(value) {
10
+ return Math.floor(value) === value;
11
+ }
12
+
13
+ class TableCarouselAnimationPlugin {
14
+ constructor(options = {}) {
15
+ var _a, _b, _c, _d, _e, _f, _g;
16
+ this.id = "table-carousel-animation", this.runTime = [ vtable_1.TABLE_EVENT_TYPE.INITIALIZED ],
17
+ this.willUpdateRow = !1, this.willUpdateCol = !1, this.rowCount = null !== (_a = null == options ? void 0 : options.rowCount) && void 0 !== _a ? _a : void 0,
18
+ this.colCount = null !== (_b = null == options ? void 0 : options.colCount) && void 0 !== _b ? _b : void 0,
19
+ this.animationDuration = null !== (_c = null == options ? void 0 : options.animationDuration) && void 0 !== _c ? _c : 500,
20
+ this.animationDelay = null !== (_d = null == options ? void 0 : options.animationDelay) && void 0 !== _d ? _d : 1e3,
21
+ this.animationEasing = null !== (_e = null == options ? void 0 : options.animationEasing) && void 0 !== _e ? _e : "linear",
22
+ this.autoPlay = null !== (_f = null == options ? void 0 : options.autoPlay) && void 0 !== _f && _f,
23
+ this.autoPlayDelay = null !== (_g = null == options ? void 0 : options.autoPlayDelay) && void 0 !== _g ? _g : 0,
24
+ this.customDistColFunction = options.customDistColFunction, this.customDistRowFunction = options.customDistRowFunction;
25
+ }
26
+ run(...args) {
27
+ this.table || (this.table = args[2]), this.reset(), this.autoPlay && setTimeout((() => {
28
+ this.play();
29
+ }), this.autoPlayDelay);
30
+ }
31
+ reset() {
32
+ this.playing = !1, this.row = this.table.frozenRowCount, this.col = this.table.frozenColCount;
33
+ }
34
+ play() {
35
+ if (!this.table) throw new Error("table is not initialized");
36
+ this.playing = !0, this.rowCount && !this.willUpdateRow ? this.updateRow() : this.colCount && !this.willUpdateCol && this.updateCol();
37
+ }
38
+ pause() {
39
+ this.playing = !1;
40
+ }
41
+ updateRow() {
42
+ var _a;
43
+ if (!this.playing || this.table.isReleased) return;
44
+ let animation = !0;
45
+ const customRow = this.customDistRowFunction && this.customDistRowFunction(this.row, this.table);
46
+ customRow ? (this.row = customRow.distRow, animation = null === (_a = customRow.animation) || void 0 === _a || _a) : isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== this.row ? (this.row = this.table.frozenRowCount,
47
+ animation = !1) : isInteger(this.row) || this.table.scenegraph.proxy.screenTopRow === Math.floor(this.row) ? this.row += this.rowCount : (this.row = this.table.frozenRowCount,
48
+ animation = !1), this.table.scrollToRow(this.row, animation ? {
49
+ duration: this.animationDuration,
50
+ easing: this.animationEasing
51
+ } : void 0), this.willUpdateRow = !0, setTimeout((() => {
52
+ this.willUpdateRow = !1, this.updateRow();
53
+ }), this.animationDuration + this.animationDelay);
54
+ }
55
+ updateCol() {
56
+ var _a;
57
+ if (!this.playing || this.table.isReleased) return;
58
+ let animation = !0;
59
+ const customCol = this.customDistColFunction && this.customDistColFunction(this.col, this.table);
60
+ customCol ? (this.col = customCol.distCol, animation = null === (_a = customCol.animation) || void 0 === _a || _a) : isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== this.col ? (this.col = this.table.frozenColCount,
61
+ animation = !1) : isInteger(this.col) || this.table.scenegraph.proxy.screenLeftCol === Math.floor(this.col) ? this.col += this.colCount : (this.col = this.table.frozenColCount,
62
+ animation = !1), this.table.scrollToCol(this.col, animation ? {
63
+ duration: this.animationDuration,
64
+ easing: this.animationEasing
65
+ } : void 0), this.willUpdateCol = !0, setTimeout((() => {
66
+ this.willUpdateCol = !1, this.updateCol();
67
+ }), this.animationDuration + this.animationDelay);
68
+ }
69
+ release() {}
70
+ }
71
+
72
+ exports.TableCarouselAnimationPlugin = TableCarouselAnimationPlugin;
73
+ //# sourceMappingURL=table-carousel-animation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["table-carousel-animation.ts"],"names":[],"mappings":"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","file":"table-carousel-animation.js","sourcesContent":["import type { EasingType } from '@visactor/vtable/es/vrender';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nimport type * as VTable from '@visactor/vtable';\nfunction isInteger(value: number) {\n return Math.floor(value) === value;\n}\n\nexport interface ITableCarouselAnimationPluginOptions {\n rowCount?: number;\n colCount?: number;\n animationDuration?: number;\n animationDelay?: number;\n animationEasing?: EasingType;\n autoPlay?: boolean;\n autoPlayDelay?: number;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n}\n\nexport class TableCarouselAnimationPlugin implements VTable.plugins.IVTablePlugin {\n id = 'table-carousel-animation';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED];\n table: BaseTableAPI;\n\n rowCount: number;\n colCount: number;\n animationDuration: number;\n animationDelay: number;\n animationEasing: EasingType;\n\n playing: boolean;\n row: number;\n col: number;\n willUpdateRow: boolean = false;\n willUpdateCol: boolean = false;\n autoPlay: boolean;\n autoPlayDelay: number;\n\n customDistRowFunction?: (row: number, table: BaseTableAPI) => { distRow: number; animation?: boolean } | undefined;\n customDistColFunction?: (col: number, table: BaseTableAPI) => { distCol: number; animation?: boolean } | undefined;\n constructor(options: ITableCarouselAnimationPluginOptions = {}) {\n this.rowCount = options?.rowCount ?? undefined;\n this.colCount = options?.colCount ?? undefined;\n this.animationDuration = options?.animationDuration ?? 500;\n this.animationDelay = options?.animationDelay ?? 1000;\n this.animationEasing = options?.animationEasing ?? 'linear';\n this.autoPlay = options?.autoPlay ?? false;\n this.autoPlayDelay = options?.autoPlayDelay ?? 0;\n this.customDistColFunction = options.customDistColFunction;\n this.customDistRowFunction = options.customDistRowFunction;\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n this.reset();\n\n if (this.autoPlay) {\n setTimeout(() => {\n this.play();\n }, this.autoPlayDelay);\n }\n }\n\n reset() {\n this.playing = false;\n this.row = this.table.frozenRowCount;\n this.col = this.table.frozenColCount;\n }\n\n play() {\n if (!this.table) {\n throw new Error('table is not initialized');\n }\n this.playing = true;\n\n if (this.rowCount && !this.willUpdateRow) {\n this.updateRow();\n } else if (this.colCount && !this.willUpdateCol) {\n this.updateCol();\n }\n }\n\n pause() {\n this.playing = false;\n }\n\n updateRow() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customRow = this.customDistRowFunction && this.customDistRowFunction(this.row, this.table);\n if (customRow) {\n this.row = customRow.distRow;\n animation = customRow.animation ?? true;\n } else if (isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== this.row) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else if (!isInteger(this.row) && this.table.scenegraph.proxy.screenTopRow !== Math.floor(this.row)) {\n this.row = this.table.frozenRowCount;\n animation = false;\n } else {\n this.row += this.rowCount;\n }\n this.table.scrollToRow(\n this.row,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n this.willUpdateRow = true;\n setTimeout(\n () => {\n this.willUpdateRow = false;\n this.updateRow();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n\n updateCol() {\n if (!this.playing || this.table.isReleased) {\n return;\n }\n\n let animation = true;\n const customCol = this.customDistColFunction && this.customDistColFunction(this.col, this.table);\n if (customCol) {\n this.col = customCol.distCol;\n animation = customCol.animation ?? true;\n } else if (isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== this.col) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else if (!isInteger(this.col) && this.table.scenegraph.proxy.screenLeftCol !== Math.floor(this.col)) {\n this.col = this.table.frozenColCount;\n animation = false;\n } else {\n this.col += this.colCount;\n }\n\n this.table.scrollToCol(\n this.col,\n animation ? { duration: this.animationDuration, easing: this.animationEasing } : undefined\n );\n\n this.willUpdateCol = true;\n setTimeout(\n () => {\n this.willUpdateCol = false;\n this.updateCol();\n },\n // animation ? this.animationDuration + this.animationDelay : 0\n this.animationDuration + this.animationDelay\n );\n }\n release() {\n // do nothing\n }\n}\n"]}
package/cjs/types.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export type EventArg = {
2
+ event: MouseEvent | KeyboardEvent;
3
+ };
package/cjs/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+ //# sourceMappingURL=types.js.map