@visactor/vtable 1.24.0-alpha.0 → 1.25.0

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 (111) hide show
  1. package/cjs/core/BaseTable.d.ts +7 -0
  2. package/cjs/core/BaseTable.js +55 -17
  3. package/cjs/core/BaseTable.js.map +1 -1
  4. package/cjs/core/animation.js +3 -5
  5. package/cjs/core/animation.js.map +1 -1
  6. package/cjs/core/tableHelper.js +5 -3
  7. package/cjs/core/tableHelper.js.map +1 -1
  8. package/cjs/core/utils/get-cell-position.js +23 -12
  9. package/cjs/core/utils/get-cell-position.js.map +1 -1
  10. package/cjs/dataset/DataStatistics.js +2 -1
  11. package/cjs/edit/edit-manager.js +0 -1
  12. package/cjs/event/listener/container-dom.js +7 -5
  13. package/cjs/event/listener/container-dom.js.map +1 -1
  14. package/cjs/event/listener/scroll-bar.js +77 -6
  15. package/cjs/event/listener/scroll-bar.js.map +1 -1
  16. package/cjs/event/listener/table-group.js +29 -20
  17. package/cjs/event/listener/table-group.js.map +1 -1
  18. package/cjs/event/scroll.js +34 -11
  19. package/cjs/event/scroll.js.map +1 -1
  20. package/cjs/event/util.d.ts +2 -0
  21. package/cjs/event/util.js +28 -3
  22. package/cjs/event/util.js.map +1 -1
  23. package/cjs/index.d.ts +1 -1
  24. package/cjs/index.js +1 -1
  25. package/cjs/index.js.map +1 -1
  26. package/cjs/scenegraph/component/table-component.d.ts +6 -1
  27. package/cjs/scenegraph/component/table-component.js +143 -16
  28. package/cjs/scenegraph/component/table-component.js.map +1 -1
  29. package/cjs/scenegraph/component/util.js +5 -2
  30. package/cjs/scenegraph/component/util.js.map +1 -1
  31. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  32. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  33. package/cjs/scenegraph/group-creater/init-scenegraph.js +36 -6
  34. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  35. package/cjs/scenegraph/group-creater/progress/proxy.js +4 -2
  36. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  37. package/cjs/scenegraph/scenegraph.d.ts +13 -0
  38. package/cjs/scenegraph/scenegraph.js +194 -23
  39. package/cjs/scenegraph/scenegraph.js.map +1 -1
  40. package/cjs/scenegraph/select/create-select-border.js +9 -10
  41. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  42. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  43. package/cjs/scenegraph/select/move-select-border.js.map +1 -1
  44. package/cjs/scenegraph/select/update-custom-select-border.js +9 -9
  45. package/cjs/scenegraph/select/update-custom-select-border.js.map +1 -1
  46. package/cjs/scenegraph/select/update-select-border.js +14 -73
  47. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  48. package/cjs/scenegraph/select/update-select-style.js.map +1 -1
  49. package/cjs/state/state.d.ts +7 -1
  50. package/cjs/state/state.js +61 -28
  51. package/cjs/state/state.js.map +1 -1
  52. package/cjs/ts-types/base-table.d.ts +10 -0
  53. package/cjs/ts-types/base-table.js.map +1 -1
  54. package/cjs/vrender.js.map +1 -1
  55. package/dist/vtable.js +1087 -337
  56. package/dist/vtable.min.js +2 -2
  57. package/es/core/BaseTable.d.ts +7 -0
  58. package/es/core/BaseTable.js +55 -17
  59. package/es/core/BaseTable.js.map +1 -1
  60. package/es/core/animation.js +3 -5
  61. package/es/core/animation.js.map +1 -1
  62. package/es/core/tableHelper.js +5 -3
  63. package/es/core/tableHelper.js.map +1 -1
  64. package/es/core/utils/get-cell-position.js +23 -12
  65. package/es/core/utils/get-cell-position.js.map +1 -1
  66. package/es/dataset/DataStatistics.js +2 -1
  67. package/es/edit/edit-manager.js +1 -2
  68. package/es/event/listener/container-dom.js +7 -5
  69. package/es/event/listener/container-dom.js.map +1 -1
  70. package/es/event/listener/scroll-bar.js +75 -6
  71. package/es/event/listener/scroll-bar.js.map +1 -1
  72. package/es/event/listener/table-group.js +29 -21
  73. package/es/event/listener/table-group.js.map +1 -1
  74. package/es/event/scroll.js +34 -11
  75. package/es/event/scroll.js.map +1 -1
  76. package/es/event/util.d.ts +2 -0
  77. package/es/event/util.js +24 -0
  78. package/es/event/util.js.map +1 -1
  79. package/es/index.d.ts +1 -1
  80. package/es/index.js +1 -1
  81. package/es/index.js.map +1 -1
  82. package/es/scenegraph/component/table-component.d.ts +6 -1
  83. package/es/scenegraph/component/table-component.js +141 -16
  84. package/es/scenegraph/component/table-component.js.map +1 -1
  85. package/es/scenegraph/component/util.js +5 -2
  86. package/es/scenegraph/component/util.js.map +1 -1
  87. package/es/scenegraph/graphic/contributions/group-contribution-render.js +29 -10
  88. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  89. package/es/scenegraph/group-creater/init-scenegraph.js +36 -6
  90. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  91. package/es/scenegraph/group-creater/progress/proxy.js +4 -2
  92. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  93. package/es/scenegraph/scenegraph.d.ts +13 -0
  94. package/es/scenegraph/scenegraph.js +185 -18
  95. package/es/scenegraph/scenegraph.js.map +1 -1
  96. package/es/scenegraph/select/create-select-border.js +9 -10
  97. package/es/scenegraph/select/create-select-border.js.map +1 -1
  98. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  99. package/es/scenegraph/select/move-select-border.js.map +1 -1
  100. package/es/scenegraph/select/update-custom-select-border.js +9 -9
  101. package/es/scenegraph/select/update-custom-select-border.js.map +1 -1
  102. package/es/scenegraph/select/update-select-border.js +14 -73
  103. package/es/scenegraph/select/update-select-border.js.map +1 -1
  104. package/es/scenegraph/select/update-select-style.js.map +1 -1
  105. package/es/state/state.d.ts +7 -1
  106. package/es/state/state.js +61 -28
  107. package/es/state/state.js.map +1 -1
  108. package/es/ts-types/base-table.d.ts +10 -0
  109. package/es/ts-types/base-table.js.map +1 -1
  110. package/es/vrender.js.map +1 -1
  111. package/package.json +5 -5
@@ -14,11 +14,11 @@ class Animateaaa extends vrender_1.ACustomAnimate {
14
14
  onUpdate(end, ratio, out) {
15
15
  if (this.from.x !== this.to.x) {
16
16
  const x = end ? this.to.x : this.from.x + Math.floor((this.to.x - this.from.x) * ratio);
17
- this.params.table.scrollLeft = x, 1 === ratio && -1 !== this.to.targetCol && this.params.table.scrollToCol(this.to.targetCol, !1);
17
+ this.params.table.scrollLeft = x;
18
18
  }
19
19
  if (this.from.y !== this.to.y) {
20
20
  const y = end ? this.to.y : this.from.y + Math.floor((this.to.y - this.from.y) * ratio);
21
- this.params.table.scrollTop = y, 1 === ratio && -1 !== this.to.targetRow && this.params.table.scrollToRow(this.to.targetRow, !1);
21
+ this.params.table.scrollTop = y;
22
22
  }
23
23
  }
24
24
  }
@@ -43,9 +43,7 @@ class TableAnimationManager {
43
43
  colDecimal && (left += colDecimal * cellRect.width), rowDecimal && (top += rowDecimal * cellRect.height);
44
44
  const to = {
45
45
  x: (0, vutils_1.isNumber)(col) ? left - this.table.getFrozenColsWidth() : this.table.scrollLeft,
46
- y: (0, vutils_1.isNumber)(row) ? top - this.table.getFrozenRowsHeight() : this.table.scrollTop,
47
- targetRow: null != rowInt ? rowInt : -1,
48
- targetCol: null != colInt ? colInt : -1
46
+ y: (0, vutils_1.isNumber)(row) ? top - this.table.getFrozenRowsHeight() : this.table.scrollTop
49
47
  }, duration = (0, vutils_1.isBoolean)(animationOption) ? animationOption ? 3e3 : 0 : null !== (_a = null == animationOption ? void 0 : animationOption.duration) && void 0 !== _a ? _a : 3e3, easing = (0,
50
48
  vutils_1.isBoolean)(animationOption) ? animationOption ? "linear" : "" : null !== (_b = null == animationOption ? void 0 : animationOption.easing) && void 0 !== _b ? _b : "linear";
51
49
  new vrender_1.Animate(vrender_1.Generator.GenAutoIncrementId(), this.timeline).bind(this.tempGraphic).play(new Animateaaa(from, to, duration, easing, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/animation.ts"],"names":[],"mappings":"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","file":"animation.js","sourcesContent":["import type { EasingType, IRect } from './../vrender';\nimport { DefaultTimeline, DefaultTicker, ACustomAnimate, createRect, Generator, Animate } from './../vrender';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { isBoolean, isNumber } from '@visactor/vutils';\nimport type { ITableAnimationOption } from '../ts-types/animation/appear';\n\nfunction isInteger(value: number) {\n return Math.floor(value) === value;\n}\nclass Animateaaa extends ACustomAnimate<any> {\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.from.x !== this.to.x) {\n const x = end ? this.to.x : this.from.x + Math.floor((this.to.x - this.from.x) * ratio);\n this.params.table.scrollLeft = x;\n if (ratio === 1 && this.to.targetCol !== -1) {\n // ensure scrollToCol is called at the end of animation to avoid not reaching the target col\n this.params.table.scrollToCol(this.to.targetCol, false);\n }\n }\n if (this.from.y !== this.to.y) {\n const y = end ? this.to.y : this.from.y + Math.floor((this.to.y - this.from.y) * ratio);\n this.params.table.scrollTop = y;\n if (ratio === 1 && this.to.targetRow !== -1) {\n // ensure scrollToRow is called at the end of animation to avoid not reaching the target row\n this.params.table.scrollToRow(this.to.targetRow, false);\n }\n }\n }\n}\n\nexport class TableAnimationManager {\n table: BaseTableAPI;\n timeline: DefaultTimeline;\n ticker: DefaultTicker;\n animation: Animate;\n tempGraphic: IRect;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.timeline = new DefaultTimeline();\n // this.ticker = new DefaultTicker([this.timeline]);\n this.ticker = new DefaultTicker(this.table.scenegraph.stage);\n this.ticker.addTimeline(this.timeline);\n const TICKER_FPS = 60;\n this.ticker.setFPS(TICKER_FPS);\n // no use, for avoid error in vrender animation\n this.tempGraphic = createRect({});\n }\n\n scrollTo(position: { col?: number; row?: number }, animationOption?: ITableAnimationOption | true) {\n const from = {\n x: this.table.scrollLeft,\n y: this.table.scrollTop\n };\n\n const { col, row } = position;\n let colInt = col;\n let rowInt = row;\n let colDecimal;\n let rowDecimal;\n if (isNumber(col) && !isInteger(col)) {\n colInt = Math.floor(col);\n colDecimal = col - colInt;\n }\n if (isNumber(row) && !isInteger(row)) {\n rowInt = Math.floor(row);\n rowDecimal = row - rowInt;\n }\n const cellRect = this.table.getCellRect(colInt ?? 0, rowInt ?? 0);\n let { left, top } = cellRect;\n\n // deal with decimal\n if (colDecimal) {\n left += colDecimal * cellRect.width;\n }\n if (rowDecimal) {\n top += rowDecimal * cellRect.height;\n }\n\n const to = {\n x: isNumber(col) ? left - this.table.getFrozenColsWidth() : this.table.scrollLeft,\n y: isNumber(row) ? top - this.table.getFrozenRowsHeight() : this.table.scrollTop,\n targetRow: rowInt ?? -1,\n targetCol: colInt ?? -1\n };\n const duration = !isBoolean(animationOption) ? animationOption?.duration ?? 3000 : animationOption ? 3000 : 0;\n const easing = !isBoolean(animationOption) ? animationOption?.easing ?? 'linear' : animationOption ? 'linear' : '';\n\n const animation = new Animate(Generator.GenAutoIncrementId(), this.timeline).bind(this.tempGraphic).play(\n new Animateaaa(from, to, duration, easing, {\n graphic: this.tempGraphic,\n table: this.table\n })\n );\n // this.timeline.addAnimate(animation);\n this.ticker.start();\n }\n\n clear() {\n this.timeline.clear();\n this.ticker.stop();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/animation.ts"],"names":[],"mappings":"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","file":"animation.js","sourcesContent":["import type { EasingType, IRect } from './../vrender';\nimport { DefaultTimeline, DefaultTicker, ACustomAnimate, createRect, Generator, Animate } from './../vrender';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { isBoolean, isNumber } from '@visactor/vutils';\nimport type { ITableAnimationOption } from '../ts-types/animation/appear';\n\nfunction isInteger(value: number) {\n return Math.floor(value) === value;\n}\nclass Animateaaa extends ACustomAnimate<any> {\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.from.x !== this.to.x) {\n const x = end ? this.to.x : this.from.x + Math.floor((this.to.x - this.from.x) * ratio);\n this.params.table.scrollLeft = x;\n }\n if (this.from.y !== this.to.y) {\n const y = end ? this.to.y : this.from.y + Math.floor((this.to.y - this.from.y) * ratio);\n this.params.table.scrollTop = y;\n }\n }\n}\n\nexport class TableAnimationManager {\n table: BaseTableAPI;\n timeline: DefaultTimeline;\n ticker: DefaultTicker;\n animation: Animate;\n tempGraphic: IRect;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.timeline = new DefaultTimeline();\n // this.ticker = new DefaultTicker([this.timeline]);\n this.ticker = new DefaultTicker(this.table.scenegraph.stage);\n this.ticker.addTimeline(this.timeline);\n const TICKER_FPS = 60;\n this.ticker.setFPS(TICKER_FPS);\n // no use, for avoid error in vrender animation\n this.tempGraphic = createRect({});\n }\n\n scrollTo(position: { col?: number; row?: number }, animationOption?: ITableAnimationOption | true) {\n const from = {\n x: this.table.scrollLeft,\n y: this.table.scrollTop\n };\n\n const { col, row } = position;\n let colInt = col;\n let rowInt = row;\n let colDecimal;\n let rowDecimal;\n if (isNumber(col) && !isInteger(col)) {\n colInt = Math.floor(col);\n colDecimal = col - colInt;\n }\n if (isNumber(row) && !isInteger(row)) {\n rowInt = Math.floor(row);\n rowDecimal = row - rowInt;\n }\n const cellRect = this.table.getCellRect(colInt ?? 0, rowInt ?? 0);\n let { left, top } = cellRect;\n\n // deal with decimal\n if (colDecimal) {\n left += colDecimal * cellRect.width;\n }\n if (rowDecimal) {\n top += rowDecimal * cellRect.height;\n }\n\n const to = {\n x: isNumber(col) ? left - this.table.getFrozenColsWidth() : this.table.scrollLeft,\n y: isNumber(row) ? top - this.table.getFrozenRowsHeight() : this.table.scrollTop\n };\n const duration = !isBoolean(animationOption) ? animationOption?.duration ?? 3000 : animationOption ? 3000 : 0;\n const easing = !isBoolean(animationOption) ? animationOption?.easing ?? 'linear' : animationOption ? 'linear' : '';\n\n const animation = new Animate(Generator.GenAutoIncrementId(), this.timeline).bind(this.tempGraphic).play(\n new Animateaaa(from, to, duration, easing, {\n graphic: this.tempGraphic,\n table: this.table\n })\n );\n // this.timeline.addAnimate(animation);\n this.ticker.start();\n }\n\n clear() {\n this.timeline.clear();\n this.ticker.stop();\n }\n}\n"]}
@@ -133,12 +133,14 @@ function isAutoDefine(width) {
133
133
  }
134
134
 
135
135
  function _getScrollableVisibleRect(table) {
136
- let frozenColsWidth = 0, rightFrozenColsWidth = 0;
137
- table.frozenColCount > 0 && (frozenColsWidth = table.getFrozenColsWidth()), table.rightFrozenColCount > 0 && (rightFrozenColsWidth = table.getRightFrozenColsWidth());
136
+ var _a, _b;
137
+ let frozenColsWidth = 0, frozenColsContentWidth = 0, rightFrozenColsWidth = 0;
138
+ table.frozenColCount > 0 && (frozenColsWidth = table.getFrozenColsWidth(), frozenColsContentWidth = null !== (_b = null === (_a = table.getFrozenColsContentWidth) || void 0 === _a ? void 0 : _a.call(table)) && void 0 !== _b ? _b : frozenColsWidth),
139
+ table.rightFrozenColCount > 0 && (rightFrozenColsWidth = table.getRightFrozenColsWidth());
138
140
  let frozenRowsHeight = 0, bottomFrozenRowsHeight = 0;
139
141
  return table.frozenRowCount > 0 && (frozenRowsHeight = table.getFrozenRowsHeight()),
140
142
  table.bottomFrozenRowCount > 0 && (bottomFrozenRowsHeight = table.getBottomFrozenRowsHeight()),
141
- new Rect_1.Rect(table.scrollLeft + frozenColsWidth, table.scrollTop + frozenRowsHeight, table.tableNoFrameWidth - frozenColsWidth - rightFrozenColsWidth, table.tableNoFrameHeight - frozenRowsHeight - bottomFrozenRowsHeight);
143
+ new Rect_1.Rect(table.scrollLeft + frozenColsContentWidth, table.scrollTop + frozenRowsHeight, table.tableNoFrameWidth - frozenColsWidth - rightFrozenColsWidth, table.tableNoFrameHeight - frozenRowsHeight - bottomFrozenRowsHeight);
142
144
  }
143
145
 
144
146
  function getStyleTheme(headerStyle, table, col, row, getProp, needGetTheme = !0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/tableHelper.ts"],"names":[],"mappings":"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","file":"tableHelper.js","sourcesContent":["import type { IThemeSpec } from './../vrender';\nimport type { BaseTable } from '../core';\nimport { CachedDataSource, DataSource } from '../data';\nimport { parseFont } from '../scenegraph/utils/font';\nimport { getQuadProps } from '../scenegraph/utils/padding';\nimport { Rect } from '../tools/Rect';\nimport * as calc from '../tools/calc';\nimport type {\n Aggregation,\n ColumnsDefine,\n CustomAggregation,\n FullExtendStyle,\n ListTableAPI,\n ListTableConstructorOptions,\n SortState\n} from '../ts-types';\nimport type { BaseTableAPI, ListTableProtected } from '../ts-types/base-table';\nimport { defaultOrderFn } from '../tools/util';\nimport type { ListTable } from '../ListTable';\nimport { isValid, isArray } from '@visactor/vutils';\nimport type { PluginManager } from '../plugins/plugin-manager';\n\nexport function createRootElement(padding: any, className: string = 'vtable'): HTMLElement {\n const element = document.createElement('div');\n element.setAttribute('tabindex', '0');\n element.classList.add(className);\n element.style.outline = 'none';\n element.style.margin = `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n\n const width = (element.offsetWidth || element.parentElement?.offsetWidth || 1) - 1;\n const height = (element.offsetHeight || element.parentElement?.offsetHeight || 1) - 1;\n\n element.style.width = (width && `${width - padding.left - padding.right}px`) || '0px';\n element.style.height = (height && `${height - padding.top - padding.bottom}px`) || '0px';\n\n return element;\n}\nexport function updateRootElementPadding(element: HTMLElement, padding: any): void {\n element.style.margin = `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n const width = (element.offsetWidth || element.parentElement?.offsetWidth || 1) - 1;\n const height = (element.offsetHeight || element.parentElement?.offsetHeight || 1) - 1;\n element.style.width = (width && `${width - padding.left - padding.right}px`) || '0px';\n element.style.height = (height && `${height - padding.top - padding.bottom}px`) || '0px';\n}\nexport function _dealWithUpdateDataSource(table: BaseTableAPI, fn: (table: BaseTableAPI) => void): void {\n const { dataSourceEventIds } = table.internalProps;\n\n if (dataSourceEventIds) {\n dataSourceEventIds.forEach((id: any) => table.internalProps.handler.off(id));\n }\n\n fn(table);\n\n table.internalProps.dataSourceEventIds = [\n table.internalProps.handler.on(table.internalProps.dataSource, DataSource.EVENT_TYPE.CHANGE_ORDER, () => {\n if (table.dataSource.hierarchyExpandLevel) {\n table.refreshRowColCount();\n }\n table.render();\n })\n ];\n}\n/** @private */\nexport function _setRecords(table: ListTableAPI, records: any[] = []): void {\n const tableWithPlugins = table as ListTableAPI & { pluginManager?: PluginManager };\n\n _dealWithUpdateDataSource(table, () => {\n table.internalProps.records = records;\n let rowHierarchyType = table.internalProps.layoutMap.rowHierarchyType;\n if (isArray(table.internalProps.dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n }\n if (tableWithPlugins.pluginManager.getPluginByName('Master Detail Plugin')) {\n rowHierarchyType = 'grid';\n }\n const newDataSource = (table.internalProps.dataSource = CachedDataSource.ofArray(\n records,\n table.internalProps.dataConfig,\n table.pagination,\n table.internalProps.columns,\n rowHierarchyType,\n getHierarchyExpandLevel(table)\n ));\n table.addReleaseObj(newDataSource);\n });\n}\n\nfunction getHierarchyExpandLevel(table: ListTableAPI) {\n if ((table.options as ListTableConstructorOptions).hierarchyExpandLevel) {\n return (table.options as ListTableConstructorOptions).hierarchyExpandLevel;\n } else if ((table.internalProps as ListTableProtected).groupBy) {\n return Infinity;\n }\n return table._hasHierarchyTreeHeader?.() ? 1 : undefined;\n}\n\nexport function _setDataSource(table: BaseTableAPI, dataSource: DataSource): void {\n _dealWithUpdateDataSource(table, () => {\n if (table.internalProps.dataSource) {\n table.internalProps.releaseList.forEach(releaseObj => {\n if (releaseObj instanceof DataSource) {\n releaseObj.release();\n table.internalProps.releaseList.splice(table.internalProps.releaseList.indexOf(releaseObj), 1);\n }\n });\n }\n if (dataSource) {\n if (dataSource instanceof DataSource) {\n table.internalProps.dataSource = dataSource;\n table.internalProps.dataSource.supplementConfig(\n table.pagination,\n (table.options as ListTableConstructorOptions).columns,\n table.internalProps.layoutMap.rowHierarchyType,\n getHierarchyExpandLevel(table as ListTableAPI)\n );\n } else {\n table.internalProps.dataSource = new CachedDataSource(dataSource);\n }\n } else {\n table.internalProps.dataSource = DataSource.EMPTY;\n }\n table.addReleaseObj(table.internalProps.dataSource);\n table.internalProps.records = null;\n });\n}\nexport function _getTargetFrozenRowAt(\n table: BaseTableAPI,\n absoluteY: number\n): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n} | null {\n if (!table.internalProps.frozenRowCount) {\n return null;\n }\n let { scrollTop } = table;\n const rowCount = table.internalProps.frozenRowCount;\n for (let row = 0; row < rowCount; row++) {\n const height = table.getRowHeight(row);\n const bottom = scrollTop + height;\n if (bottom > absoluteY) {\n return {\n top: scrollTop,\n row,\n bottom,\n height\n };\n }\n scrollTop = bottom;\n }\n return null;\n}\n\nexport function _getTargetFrozenColAt(\n table: BaseTableAPI,\n absoluteX: number\n): {\n left: number;\n col: number;\n right: number;\n width: number;\n} | null {\n if (!table.internalProps.frozenColCount) {\n return null;\n }\n let { scrollLeft } = table;\n const colCount = table.internalProps.frozenColCount;\n for (let col = 0; col < colCount; col++) {\n const width = table.getColWidth(col);\n const right = scrollLeft + width;\n if (right > absoluteX) {\n return {\n left: scrollLeft,\n col,\n right,\n width\n };\n }\n scrollLeft = right;\n }\n return null;\n}\n\nexport function _toPxWidth(table: BaseTable, width: string | number): number {\n return Math.round(calc.toPx(width, table.internalProps.calcWidthContext));\n}\n\nexport function _applyColWidthLimits(limits: { min?: number; max?: number } | void | null, orgWidth: number): number {\n if (!limits) {\n return orgWidth;\n }\n\n if (limits.min) {\n if (limits.min > orgWidth) {\n return limits.min;\n }\n }\n if (limits.max) {\n if (limits.max < orgWidth) {\n return limits.max;\n }\n }\n return orgWidth;\n}\n/**\n * 检查设置的width是否为'auto'\n * @param {string|number} width width definition\n * @returns {boolean}\n */\nexport function isAutoDefine(width: string | number): width is 'auto' {\n return Boolean(width && typeof width === 'string' && width.toLowerCase() === 'auto');\n}\n\nexport function _getScrollableVisibleRect(table: BaseTableAPI): Rect {\n let frozenColsWidth = 0;\n let rightFrozenColsWidth = 0;\n if (table.frozenColCount > 0) {\n //有固定列时绘制固定列\n frozenColsWidth = table.getFrozenColsWidth();\n }\n if (table.rightFrozenColCount > 0) {\n //有固定列时绘制固定列\n rightFrozenColsWidth = table.getRightFrozenColsWidth();\n }\n let frozenRowsHeight = 0;\n let bottomFrozenRowsHeight = 0;\n if (table.frozenRowCount > 0) {\n //有固定列时绘制固定列\n frozenRowsHeight = table.getFrozenRowsHeight();\n }\n if (table.bottomFrozenRowCount > 0) {\n //有固定列时绘制固定列\n bottomFrozenRowsHeight = table.getBottomFrozenRowsHeight();\n }\n return new Rect(\n table.scrollLeft + frozenColsWidth,\n table.scrollTop + frozenRowsHeight,\n table.tableNoFrameWidth - frozenColsWidth - rightFrozenColsWidth,\n table.tableNoFrameHeight - frozenRowsHeight - bottomFrozenRowsHeight\n );\n}\n/**\n * @description: 从style对象里获取theme所需要的属性\n * @param {FullExtendStyle} headerStyle\n * @param {BaseTableAPI} table\n * @param {number} col\n * @param {number} row\n * @param {any} getProp\n * @return {*}\n */\nexport function getStyleTheme(\n headerStyle: FullExtendStyle,\n table: BaseTableAPI,\n col: number,\n row: number,\n getProp: any,\n needGetTheme = true\n) {\n // 属性参考IStyleOption\n const padding = getQuadProps(getProp('padding', headerStyle, col, row, table));\n const bgColor = getProp('bgColor', headerStyle, col, row, table);\n\n const font = getProp('font', headerStyle, col, row, table);\n let fontFamily;\n let fontSize;\n let fontWeight;\n let fontStyle;\n let fontVariant;\n if (font) {\n // 后期会弃用直接设置font,而使用fontFamily fontSize fontWeight 等属性\n const { family, size, weight, style, variant } = parseFont(font);\n fontFamily = family.join(' ');\n fontSize = size;\n fontWeight = weight;\n fontStyle = style;\n fontStyle = variant;\n } else {\n fontFamily = getProp('fontFamily', headerStyle, col, row, table);\n fontSize = getProp('fontSize', headerStyle, col, row, table);\n fontWeight = getProp('fontWeight', headerStyle, col, row, table);\n fontStyle = getProp('fontStyle', headerStyle, col, row, table);\n fontVariant = getProp('fontVariant', headerStyle, col, row, table);\n }\n\n // const fontSize = getFontSize(font);\n // const fontWeight = getFontWeight(font);\n\n const textAlign = getProp('textAlign', headerStyle, col, row, table);\n const textBaseline = getProp('textBaseline', headerStyle, col, row, table);\n const color = getProp('color', headerStyle, col, row, table);\n const strokeColor = getProp('strokeColor', headerStyle, col, row, table);\n\n const lineHeight = getProp('lineHeight', headerStyle, col, row, table);\n const underline = getProp('underline', headerStyle, col, row, table); // boolean\n // const underlineColor = getProp('underlineColor', headerStyle, col, row, table);\n const underlineDash = getProp('underlineDash', headerStyle, col, row, table);\n const underlineOffset = getProp('underlineOffset', headerStyle, col, row, table);\n const lineThrough = getProp('lineThrough', headerStyle, col, row, table); // boolean\n // const lineThroughColor = getProp('lineThroughColor', headerStyle, col, row, table);\n // const lineThroughDash = getProp('lineThroughDash', headerStyle, col, row, table);\n const textDecorationWidth = Math.max(1, Math.floor(fontSize / 10));\n\n const textOverflow = getProp('textOverflow', headerStyle, col, row, table); // 'clip' | 'ellipsis' | string\n const borderColor = getProp('borderColor', headerStyle, col, row, table); // string | string[]\n const borderLineWidth = getProp('borderLineWidth', headerStyle, col, row, table); // number | number[]\n const borderLineDash = getProp('borderLineDash', headerStyle, col, row, table); // number[] | (number[] | null)[]\n\n const marked = getProp('marked', headerStyle, col, row, table); // boolean\n const cursor = getProp('cursor', headerStyle, col, row, table); // boolean\n\n const hasFunctionPros =\n !padding ||\n !bgColor ||\n !font ||\n !textAlign ||\n !textBaseline ||\n !color ||\n !textOverflow ||\n !borderColor ||\n !borderLineWidth ||\n !borderLineDash ||\n typeof underline !== 'boolean' ||\n typeof lineThrough !== 'boolean' ||\n typeof marked !== 'boolean';\n if (!needGetTheme) {\n return { hasFunctionPros };\n }\n const theme: IThemeSpec & { _vtable: any } = {\n text: {\n fontFamily,\n fontSize,\n fontWeight,\n fontStyle,\n fontVariant,\n fill: color,\n stroke: strokeColor ?? false,\n textAlign,\n textBaseline,\n lineHeight: lineHeight ?? fontSize,\n underline: underline ? textDecorationWidth : undefined,\n underlineDash,\n underlineOffset,\n lineThrough: lineThrough ? textDecorationWidth : undefined,\n ellipsis:\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined\n },\n group: {\n fill: bgColor,\n lineDash: borderLineDash,\n lineWidth: borderLineWidth,\n stroke: borderColor,\n cursor: cursor === 'auto' || cursor === 'default' ? undefined : cursor\n // cornerRadius: getCellCornerRadius(col, row, table)\n },\n _vtable: {\n padding,\n marked\n }\n };\n\n if (Array.isArray(borderLineWidth)) {\n (theme.group as any).strokeArrayWidth = getQuadProps(borderLineWidth);\n }\n if (Array.isArray(borderColor)) {\n const strokeColors = getQuadProps(borderColor);\n (theme.group as any).stroke = strokeColors.every(color => !color) ? false : strokeColors; // deal width strokeColor: [null, null, null, null]\n (theme.group as any).strokeArrayColor = getQuadProps(borderColor);\n }\n\n return {\n theme,\n hasFunctionPros\n };\n}\n\nexport function getCellCornerRadius(col: number, row: number, table: BaseTableAPI) {\n const tableCornerRadius = table.theme.frameStyle.cornerRadius;\n if (table.theme.cellInnerBorder) {\n if (Array.isArray(tableCornerRadius)) {\n const radius = [0, 0, 0, 0];\n if (col === 0 && row === 0) {\n // return [tableCornerRadius[0], 0, 0, 0];\n radius[0] = tableCornerRadius[0];\n }\n if (col === table.colCount - 1 && row === 0) {\n // return [0, tableCornerRadius[1], 0, 0];\n radius[1] = tableCornerRadius[1];\n }\n if (col === 0 && row === table.rowCount - 1) {\n // return [0, 0, 0, tableCornerRadius[3]];\n radius[3] = tableCornerRadius[3];\n }\n if (col === table.colCount - 1 && row === table.rowCount - 1) {\n // return [0, 0, tableCornerRadius[2], 0];\n radius[2] = tableCornerRadius[2];\n }\n return radius;\n } else if (tableCornerRadius) {\n const radius = [0, 0, 0, 0];\n if (col === 0 && row === 0) {\n // return [tableCornerRadius, 0, 0, 0];\n radius[0] = tableCornerRadius;\n }\n if (col === table.colCount - 1 && row === 0) {\n // return [0, tableCornerRadius, 0, 0];\n radius[1] = tableCornerRadius;\n }\n if (col === 0 && row === table.rowCount - 1) {\n // return [0, 0, 0, tableCornerRadius];\n radius[3] = tableCornerRadius;\n }\n if (col === table.colCount - 1 && row === table.rowCount - 1) {\n // return [0, 0, tableCornerRadius, 0];\n radius[2] = tableCornerRadius;\n }\n return radius;\n }\n }\n return 0;\n}\n\nexport function parseMarkLineGetExtendRange(markLine: any): number | 'sum' | 'max' {\n if (markLine) {\n if (Array.isArray(markLine)) {\n let extendRange: number | 'sum' | 'max';\n for (let i = 0; i < markLine.length; i++) {\n if (markLine[i].autoRange) {\n if (\n markLine[i].y === 'sum' ||\n markLine[i].x === 'sum' ||\n markLine[i].y1 === 'sum' ||\n markLine[i].x1 === 'sum'\n ) {\n return 'sum';\n }\n if (\n markLine[i].y === 'max' ||\n markLine[i].x === 'max' ||\n markLine[i].y1 === 'max' ||\n markLine[i].x1 === 'max'\n ) {\n extendRange = 'max';\n }\n if (typeof markLine[i].y === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].y);\n }\n if (typeof markLine[i].x === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].x);\n }\n if (typeof markLine[i].y1 === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].y1);\n }\n if (typeof markLine[i].x1 === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].x1);\n }\n }\n }\n return extendRange;\n } else if (markLine.autoRange) {\n if (markLine.y === 'sum' || markLine.x === 'sum' || markLine.y1 === 'sum' || markLine.x1 === 'sum') {\n return 'sum';\n }\n if (markLine.y === 'max' || markLine.x === 'max' || markLine.y1 === 'max' || markLine.x1 === 'max') {\n return 'max';\n }\n if (typeof markLine.y === 'number') {\n return markLine.y;\n }\n if (typeof markLine.x === 'number') {\n return markLine.x;\n }\n if (typeof markLine.y1 === 'number') {\n return markLine.y1;\n }\n if (typeof markLine.x1 === 'number') {\n return markLine.x1;\n }\n }\n }\n return undefined;\n}\n\nexport function generateAggregationForColumn(table: ListTable) {\n for (let col = 0; col < table.internalProps.columns.length; col++) {\n const colDef = table.internalProps.columns[col];\n if (colDef.aggregation) {\n } else if (table.options.aggregation) {\n let aggregation;\n if (typeof table.options.aggregation === 'function') {\n aggregation = table.options.aggregation({\n col: col,\n field: colDef.field as string\n });\n } else {\n aggregation = table.options.aggregation;\n }\n\n if (aggregation) {\n if (Array.isArray(aggregation)) {\n const aggregations: (Aggregation | CustomAggregation)[] = [];\n aggregation.forEach(item => {\n aggregations.push(Object.assign({ showOnTop: false }, item));\n });\n colDef.aggregation = aggregations;\n } else {\n colDef.aggregation = Object.assign({ showOnTop: false }, aggregation);\n }\n }\n }\n }\n}\n\nexport function checkHasAggregationOnColumnDefine(colDefs: ColumnsDefine) {\n for (let i = 0; i < colDefs.length; i++) {\n const colDef = colDefs[i];\n if (colDef.aggregation) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * 检查是否有列设置了autoWidth\n * @param table\n * @returns\n */\nexport function checkHasColumnAutoWidth(table: BaseTableAPI) {\n if (table.options.widthMode === 'autoWidth') {\n return true;\n }\n if (\n table.options.defaultHeaderColWidth === 'auto' ||\n (Array.isArray(table.options.defaultHeaderColWidth) && table.options.defaultHeaderColWidth.includes('auto'))\n ) {\n return true;\n }\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column.width === 'auto') {\n return true;\n }\n }\n\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/tableHelper.ts"],"names":[],"mappings":"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","file":"tableHelper.js","sourcesContent":["import type { IThemeSpec } from './../vrender';\nimport type { BaseTable } from '../core';\nimport { CachedDataSource, DataSource } from '../data';\nimport { parseFont } from '../scenegraph/utils/font';\nimport { getQuadProps } from '../scenegraph/utils/padding';\nimport { Rect } from '../tools/Rect';\nimport * as calc from '../tools/calc';\nimport type {\n Aggregation,\n ColumnsDefine,\n CustomAggregation,\n FullExtendStyle,\n ListTableAPI,\n ListTableConstructorOptions,\n SortState\n} from '../ts-types';\nimport type { BaseTableAPI, ListTableProtected } from '../ts-types/base-table';\nimport { defaultOrderFn } from '../tools/util';\nimport type { ListTable } from '../ListTable';\nimport { isValid, isArray } from '@visactor/vutils';\nimport type { PluginManager } from '../plugins/plugin-manager';\n\nexport function createRootElement(padding: any, className: string = 'vtable'): HTMLElement {\n const element = document.createElement('div');\n element.setAttribute('tabindex', '0');\n element.classList.add(className);\n element.style.outline = 'none';\n element.style.margin = `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n\n const width = (element.offsetWidth || element.parentElement?.offsetWidth || 1) - 1;\n const height = (element.offsetHeight || element.parentElement?.offsetHeight || 1) - 1;\n\n element.style.width = (width && `${width - padding.left - padding.right}px`) || '0px';\n element.style.height = (height && `${height - padding.top - padding.bottom}px`) || '0px';\n\n return element;\n}\nexport function updateRootElementPadding(element: HTMLElement, padding: any): void {\n element.style.margin = `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n const width = (element.offsetWidth || element.parentElement?.offsetWidth || 1) - 1;\n const height = (element.offsetHeight || element.parentElement?.offsetHeight || 1) - 1;\n element.style.width = (width && `${width - padding.left - padding.right}px`) || '0px';\n element.style.height = (height && `${height - padding.top - padding.bottom}px`) || '0px';\n}\nexport function _dealWithUpdateDataSource(table: BaseTableAPI, fn: (table: BaseTableAPI) => void): void {\n const { dataSourceEventIds } = table.internalProps;\n\n if (dataSourceEventIds) {\n dataSourceEventIds.forEach((id: any) => table.internalProps.handler.off(id));\n }\n\n fn(table);\n\n table.internalProps.dataSourceEventIds = [\n table.internalProps.handler.on(table.internalProps.dataSource, DataSource.EVENT_TYPE.CHANGE_ORDER, () => {\n if (table.dataSource.hierarchyExpandLevel) {\n table.refreshRowColCount();\n }\n table.render();\n })\n ];\n}\n/** @private */\nexport function _setRecords(table: ListTableAPI, records: any[] = []): void {\n const tableWithPlugins = table as ListTableAPI & { pluginManager?: PluginManager };\n\n _dealWithUpdateDataSource(table, () => {\n table.internalProps.records = records;\n let rowHierarchyType = table.internalProps.layoutMap.rowHierarchyType;\n if (isArray(table.internalProps.dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n }\n if (tableWithPlugins.pluginManager.getPluginByName('Master Detail Plugin')) {\n rowHierarchyType = 'grid';\n }\n const newDataSource = (table.internalProps.dataSource = CachedDataSource.ofArray(\n records,\n table.internalProps.dataConfig,\n table.pagination,\n table.internalProps.columns,\n rowHierarchyType,\n getHierarchyExpandLevel(table)\n ));\n table.addReleaseObj(newDataSource);\n });\n}\n\nfunction getHierarchyExpandLevel(table: ListTableAPI) {\n if ((table.options as ListTableConstructorOptions).hierarchyExpandLevel) {\n return (table.options as ListTableConstructorOptions).hierarchyExpandLevel;\n } else if ((table.internalProps as ListTableProtected).groupBy) {\n return Infinity;\n }\n return table._hasHierarchyTreeHeader?.() ? 1 : undefined;\n}\n\nexport function _setDataSource(table: BaseTableAPI, dataSource: DataSource): void {\n _dealWithUpdateDataSource(table, () => {\n if (table.internalProps.dataSource) {\n table.internalProps.releaseList.forEach(releaseObj => {\n if (releaseObj instanceof DataSource) {\n releaseObj.release();\n table.internalProps.releaseList.splice(table.internalProps.releaseList.indexOf(releaseObj), 1);\n }\n });\n }\n if (dataSource) {\n if (dataSource instanceof DataSource) {\n table.internalProps.dataSource = dataSource;\n table.internalProps.dataSource.supplementConfig(\n table.pagination,\n (table.options as ListTableConstructorOptions).columns,\n table.internalProps.layoutMap.rowHierarchyType,\n getHierarchyExpandLevel(table as ListTableAPI)\n );\n } else {\n table.internalProps.dataSource = new CachedDataSource(dataSource);\n }\n } else {\n table.internalProps.dataSource = DataSource.EMPTY;\n }\n table.addReleaseObj(table.internalProps.dataSource);\n table.internalProps.records = null;\n });\n}\nexport function _getTargetFrozenRowAt(\n table: BaseTableAPI,\n absoluteY: number\n): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n} | null {\n if (!table.internalProps.frozenRowCount) {\n return null;\n }\n let { scrollTop } = table;\n const rowCount = table.internalProps.frozenRowCount;\n for (let row = 0; row < rowCount; row++) {\n const height = table.getRowHeight(row);\n const bottom = scrollTop + height;\n if (bottom > absoluteY) {\n return {\n top: scrollTop,\n row,\n bottom,\n height\n };\n }\n scrollTop = bottom;\n }\n return null;\n}\n\nexport function _getTargetFrozenColAt(\n table: BaseTableAPI,\n absoluteX: number\n): {\n left: number;\n col: number;\n right: number;\n width: number;\n} | null {\n if (!table.internalProps.frozenColCount) {\n return null;\n }\n let { scrollLeft } = table;\n const colCount = table.internalProps.frozenColCount;\n for (let col = 0; col < colCount; col++) {\n const width = table.getColWidth(col);\n const right = scrollLeft + width;\n if (right > absoluteX) {\n return {\n left: scrollLeft,\n col,\n right,\n width\n };\n }\n scrollLeft = right;\n }\n return null;\n}\n\nexport function _toPxWidth(table: BaseTable, width: string | number): number {\n return Math.round(calc.toPx(width, table.internalProps.calcWidthContext));\n}\n\nexport function _applyColWidthLimits(limits: { min?: number; max?: number } | void | null, orgWidth: number): number {\n if (!limits) {\n return orgWidth;\n }\n\n if (limits.min) {\n if (limits.min > orgWidth) {\n return limits.min;\n }\n }\n if (limits.max) {\n if (limits.max < orgWidth) {\n return limits.max;\n }\n }\n return orgWidth;\n}\n/**\n * 检查设置的width是否为'auto'\n * @param {string|number} width width definition\n * @returns {boolean}\n */\nexport function isAutoDefine(width: string | number): width is 'auto' {\n return Boolean(width && typeof width === 'string' && width.toLowerCase() === 'auto');\n}\n\nexport function _getScrollableVisibleRect(table: BaseTableAPI): Rect {\n let frozenColsWidth = 0;\n let frozenColsContentWidth = 0;\n let rightFrozenColsWidth = 0;\n if (table.frozenColCount > 0) {\n //有固定列时绘制固定列\n frozenColsWidth = table.getFrozenColsWidth();\n frozenColsContentWidth = table.getFrozenColsContentWidth?.() ?? frozenColsWidth;\n }\n if (table.rightFrozenColCount > 0) {\n //有固定列时绘制固定列\n rightFrozenColsWidth = table.getRightFrozenColsWidth();\n }\n let frozenRowsHeight = 0;\n let bottomFrozenRowsHeight = 0;\n if (table.frozenRowCount > 0) {\n //有固定列时绘制固定列\n frozenRowsHeight = table.getFrozenRowsHeight();\n }\n if (table.bottomFrozenRowCount > 0) {\n //有固定列时绘制固定列\n bottomFrozenRowsHeight = table.getBottomFrozenRowsHeight();\n }\n return new Rect(\n table.scrollLeft + frozenColsContentWidth,\n table.scrollTop + frozenRowsHeight,\n table.tableNoFrameWidth - frozenColsWidth - rightFrozenColsWidth,\n table.tableNoFrameHeight - frozenRowsHeight - bottomFrozenRowsHeight\n );\n}\n/**\n * @description: 从style对象里获取theme所需要的属性\n * @param {FullExtendStyle} headerStyle\n * @param {BaseTableAPI} table\n * @param {number} col\n * @param {number} row\n * @param {any} getProp\n * @return {*}\n */\nexport function getStyleTheme(\n headerStyle: FullExtendStyle,\n table: BaseTableAPI,\n col: number,\n row: number,\n getProp: any,\n needGetTheme = true\n) {\n // 属性参考IStyleOption\n const padding = getQuadProps(getProp('padding', headerStyle, col, row, table));\n const bgColor = getProp('bgColor', headerStyle, col, row, table);\n\n const font = getProp('font', headerStyle, col, row, table);\n let fontFamily;\n let fontSize;\n let fontWeight;\n let fontStyle;\n let fontVariant;\n if (font) {\n // 后期会弃用直接设置font,而使用fontFamily fontSize fontWeight 等属性\n const { family, size, weight, style, variant } = parseFont(font);\n fontFamily = family.join(' ');\n fontSize = size;\n fontWeight = weight;\n fontStyle = style;\n fontStyle = variant;\n } else {\n fontFamily = getProp('fontFamily', headerStyle, col, row, table);\n fontSize = getProp('fontSize', headerStyle, col, row, table);\n fontWeight = getProp('fontWeight', headerStyle, col, row, table);\n fontStyle = getProp('fontStyle', headerStyle, col, row, table);\n fontVariant = getProp('fontVariant', headerStyle, col, row, table);\n }\n\n // const fontSize = getFontSize(font);\n // const fontWeight = getFontWeight(font);\n\n const textAlign = getProp('textAlign', headerStyle, col, row, table);\n const textBaseline = getProp('textBaseline', headerStyle, col, row, table);\n const color = getProp('color', headerStyle, col, row, table);\n const strokeColor = getProp('strokeColor', headerStyle, col, row, table);\n\n const lineHeight = getProp('lineHeight', headerStyle, col, row, table);\n const underline = getProp('underline', headerStyle, col, row, table); // boolean\n // const underlineColor = getProp('underlineColor', headerStyle, col, row, table);\n const underlineDash = getProp('underlineDash', headerStyle, col, row, table);\n const underlineOffset = getProp('underlineOffset', headerStyle, col, row, table);\n const lineThrough = getProp('lineThrough', headerStyle, col, row, table); // boolean\n // const lineThroughColor = getProp('lineThroughColor', headerStyle, col, row, table);\n // const lineThroughDash = getProp('lineThroughDash', headerStyle, col, row, table);\n const textDecorationWidth = Math.max(1, Math.floor(fontSize / 10));\n\n const textOverflow = getProp('textOverflow', headerStyle, col, row, table); // 'clip' | 'ellipsis' | string\n const borderColor = getProp('borderColor', headerStyle, col, row, table); // string | string[]\n const borderLineWidth = getProp('borderLineWidth', headerStyle, col, row, table); // number | number[]\n const borderLineDash = getProp('borderLineDash', headerStyle, col, row, table); // number[] | (number[] | null)[]\n\n const marked = getProp('marked', headerStyle, col, row, table); // boolean\n const cursor = getProp('cursor', headerStyle, col, row, table); // boolean\n\n const hasFunctionPros =\n !padding ||\n !bgColor ||\n !font ||\n !textAlign ||\n !textBaseline ||\n !color ||\n !textOverflow ||\n !borderColor ||\n !borderLineWidth ||\n !borderLineDash ||\n typeof underline !== 'boolean' ||\n typeof lineThrough !== 'boolean' ||\n typeof marked !== 'boolean';\n if (!needGetTheme) {\n return { hasFunctionPros };\n }\n const theme: IThemeSpec & { _vtable: any } = {\n text: {\n fontFamily,\n fontSize,\n fontWeight,\n fontStyle,\n fontVariant,\n fill: color,\n stroke: strokeColor ?? false,\n textAlign,\n textBaseline,\n lineHeight: lineHeight ?? fontSize,\n underline: underline ? textDecorationWidth : undefined,\n underlineDash,\n underlineOffset,\n lineThrough: lineThrough ? textDecorationWidth : undefined,\n ellipsis:\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined\n },\n group: {\n fill: bgColor,\n lineDash: borderLineDash,\n lineWidth: borderLineWidth,\n stroke: borderColor,\n cursor: cursor === 'auto' || cursor === 'default' ? undefined : cursor\n // cornerRadius: getCellCornerRadius(col, row, table)\n },\n _vtable: {\n padding,\n marked\n }\n };\n\n if (Array.isArray(borderLineWidth)) {\n (theme.group as any).strokeArrayWidth = getQuadProps(borderLineWidth);\n }\n if (Array.isArray(borderColor)) {\n const strokeColors = getQuadProps(borderColor);\n (theme.group as any).stroke = strokeColors.every(color => !color) ? false : strokeColors; // deal width strokeColor: [null, null, null, null]\n (theme.group as any).strokeArrayColor = getQuadProps(borderColor);\n }\n\n return {\n theme,\n hasFunctionPros\n };\n}\n\nexport function getCellCornerRadius(col: number, row: number, table: BaseTableAPI) {\n const tableCornerRadius = table.theme.frameStyle.cornerRadius;\n if (table.theme.cellInnerBorder) {\n if (Array.isArray(tableCornerRadius)) {\n const radius = [0, 0, 0, 0];\n if (col === 0 && row === 0) {\n // return [tableCornerRadius[0], 0, 0, 0];\n radius[0] = tableCornerRadius[0];\n }\n if (col === table.colCount - 1 && row === 0) {\n // return [0, tableCornerRadius[1], 0, 0];\n radius[1] = tableCornerRadius[1];\n }\n if (col === 0 && row === table.rowCount - 1) {\n // return [0, 0, 0, tableCornerRadius[3]];\n radius[3] = tableCornerRadius[3];\n }\n if (col === table.colCount - 1 && row === table.rowCount - 1) {\n // return [0, 0, tableCornerRadius[2], 0];\n radius[2] = tableCornerRadius[2];\n }\n return radius;\n } else if (tableCornerRadius) {\n const radius = [0, 0, 0, 0];\n if (col === 0 && row === 0) {\n // return [tableCornerRadius, 0, 0, 0];\n radius[0] = tableCornerRadius;\n }\n if (col === table.colCount - 1 && row === 0) {\n // return [0, tableCornerRadius, 0, 0];\n radius[1] = tableCornerRadius;\n }\n if (col === 0 && row === table.rowCount - 1) {\n // return [0, 0, 0, tableCornerRadius];\n radius[3] = tableCornerRadius;\n }\n if (col === table.colCount - 1 && row === table.rowCount - 1) {\n // return [0, 0, tableCornerRadius, 0];\n radius[2] = tableCornerRadius;\n }\n return radius;\n }\n }\n return 0;\n}\n\nexport function parseMarkLineGetExtendRange(markLine: any): number | 'sum' | 'max' {\n if (markLine) {\n if (Array.isArray(markLine)) {\n let extendRange: number | 'sum' | 'max';\n for (let i = 0; i < markLine.length; i++) {\n if (markLine[i].autoRange) {\n if (\n markLine[i].y === 'sum' ||\n markLine[i].x === 'sum' ||\n markLine[i].y1 === 'sum' ||\n markLine[i].x1 === 'sum'\n ) {\n return 'sum';\n }\n if (\n markLine[i].y === 'max' ||\n markLine[i].x === 'max' ||\n markLine[i].y1 === 'max' ||\n markLine[i].x1 === 'max'\n ) {\n extendRange = 'max';\n }\n if (typeof markLine[i].y === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].y);\n }\n if (typeof markLine[i].x === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].x);\n }\n if (typeof markLine[i].y1 === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].y1);\n }\n if (typeof markLine[i].x1 === 'number' && typeof (extendRange ?? 0) === 'number') {\n extendRange = Math.max(<number>extendRange ?? 0, markLine[i].x1);\n }\n }\n }\n return extendRange;\n } else if (markLine.autoRange) {\n if (markLine.y === 'sum' || markLine.x === 'sum' || markLine.y1 === 'sum' || markLine.x1 === 'sum') {\n return 'sum';\n }\n if (markLine.y === 'max' || markLine.x === 'max' || markLine.y1 === 'max' || markLine.x1 === 'max') {\n return 'max';\n }\n if (typeof markLine.y === 'number') {\n return markLine.y;\n }\n if (typeof markLine.x === 'number') {\n return markLine.x;\n }\n if (typeof markLine.y1 === 'number') {\n return markLine.y1;\n }\n if (typeof markLine.x1 === 'number') {\n return markLine.x1;\n }\n }\n }\n return undefined;\n}\n\nexport function generateAggregationForColumn(table: ListTable) {\n for (let col = 0; col < table.internalProps.columns.length; col++) {\n const colDef = table.internalProps.columns[col];\n if (colDef.aggregation) {\n } else if (table.options.aggregation) {\n let aggregation;\n if (typeof table.options.aggregation === 'function') {\n aggregation = table.options.aggregation({\n col: col,\n field: colDef.field as string\n });\n } else {\n aggregation = table.options.aggregation;\n }\n\n if (aggregation) {\n if (Array.isArray(aggregation)) {\n const aggregations: (Aggregation | CustomAggregation)[] = [];\n aggregation.forEach(item => {\n aggregations.push(Object.assign({ showOnTop: false }, item));\n });\n colDef.aggregation = aggregations;\n } else {\n colDef.aggregation = Object.assign({ showOnTop: false }, aggregation);\n }\n }\n }\n }\n}\n\nexport function checkHasAggregationOnColumnDefine(colDefs: ColumnsDefine) {\n for (let i = 0; i < colDefs.length; i++) {\n const colDef = colDefs[i];\n if (colDef.aggregation) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * 检查是否有列设置了autoWidth\n * @param table\n * @returns\n */\nexport function checkHasColumnAutoWidth(table: BaseTableAPI) {\n if (table.options.widthMode === 'autoWidth') {\n return true;\n }\n if (\n table.options.defaultHeaderColWidth === 'auto' ||\n (Array.isArray(table.options.defaultHeaderColWidth) && table.options.defaultHeaderColWidth.includes('auto'))\n ) {\n return true;\n }\n const columnObjects = table.internalProps.layoutMap.columnObjects;\n for (let i = 0; i < columnObjects.length; i++) {\n const column = columnObjects[i];\n if (column.width === 'auto') {\n return true;\n }\n }\n\n return false;\n}\n"]}
@@ -122,18 +122,24 @@ function getTargetRowAt(absoluteY, _this) {
122
122
  }
123
123
 
124
124
  function getTargetColAtConsiderRightFrozen(absoluteX, isConsider, _this) {
125
+ var _a, _b;
125
126
  if (0 === absoluteX) return {
126
127
  left: 0,
127
128
  col: 0,
128
129
  right: 0,
129
130
  width: 0
130
131
  };
131
- if (absoluteX -= _this.tableX, isConsider && absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && absoluteX < _this.tableNoFrameWidth && absoluteX <= _this.getAllColsWidth()) for (let i = 0; i < _this.rightFrozenColCount; i++) if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) return {
132
- col: _this.colCount - i - 1,
133
- left: void 0,
134
- right: void 0,
135
- width: void 0
136
- };
132
+ absoluteX -= _this.tableX;
133
+ const rightFrozenScrollLeft = null !== (_b = null === (_a = _this.getRightFrozenColsScrollLeft) || void 0 === _a ? void 0 : _a.call(_this)) && void 0 !== _b ? _b : 0;
134
+ if (isConsider && absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && absoluteX < _this.tableNoFrameWidth && absoluteX <= _this.getAllColsWidth()) {
135
+ absoluteX -= rightFrozenScrollLeft;
136
+ for (let i = 0; i < _this.rightFrozenColCount; i++) if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) return {
137
+ col: _this.colCount - i - 1,
138
+ left: void 0,
139
+ right: void 0,
140
+ width: void 0
141
+ };
142
+ }
137
143
  return getTargetColAt(absoluteX, _this);
138
144
  }
139
145
 
@@ -175,16 +181,18 @@ function computeTargetColByX(absoluteX, _this) {
175
181
  }
176
182
 
177
183
  function getCellAtRelativePosition(x, y, _this) {
178
- x -= _this.tableX;
184
+ var _a, _b, _c, _d;
185
+ x -= _this.tableX, y -= _this.tableY;
186
+ const frozenColsWidth = _this.getFrozenColsWidth(), frozenColsOffset = null !== (_b = null === (_a = _this.getFrozenColsOffset) || void 0 === _a ? void 0 : _a.call(_this)) && void 0 !== _b ? _b : 0, frozenColsScrollLeft = null !== (_d = null === (_c = _this.getFrozenColsScrollLeft) || void 0 === _c ? void 0 : _c.call(_this)) && void 0 !== _d ? _d : 0;
179
187
  let topFrozen = !1;
180
- (y -= _this.tableY) > 0 && y < _this.getFrozenRowsHeight() && (topFrozen = !0);
188
+ y > 0 && y < _this.getFrozenRowsHeight() && (topFrozen = !0);
181
189
  let leftFrozen = !1;
182
- x > 0 && x < _this.getFrozenColsWidth() && (leftFrozen = !0);
190
+ x > 0 && x < frozenColsWidth && (leftFrozen = !0);
183
191
  let bottomFrozen = !1;
184
192
  y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && y < _this.tableNoFrameHeight && y <= _this.getAllRowsHeight() && (bottomFrozen = !0);
185
193
  let rightFrozen = !1;
186
194
  x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth && x <= _this.getAllColsWidth() && (rightFrozen = !0);
187
- const colInfo = getTargetColAtConsiderRightFrozen((leftFrozen || rightFrozen ? x : x + _this.scrollLeft) + _this.tableX, rightFrozen, _this), rowInfo = getTargetRowAtConsiderBottomFrozen((topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY, bottomFrozen, _this);
195
+ const colInfo = getTargetColAtConsiderRightFrozen((leftFrozen ? x + frozenColsScrollLeft : rightFrozen ? x : x + _this.scrollLeft + frozenColsOffset) + _this.tableX, rightFrozen, _this), rowInfo = getTargetRowAtConsiderBottomFrozen((topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY, bottomFrozen, _this);
188
196
  if (colInfo && rowInfo) {
189
197
  const {row: row, top: top, bottom: bottom, height: height} = rowInfo, {col: col, left: left, right: right, width: width} = colInfo;
190
198
  return {
@@ -207,11 +215,14 @@ function getCellAtRelativePosition(x, y, _this) {
207
215
  }
208
216
 
209
217
  function getColAtRelativePosition(x, _this) {
218
+ var _a, _b, _c, _d;
219
+ x -= _this.tableX;
220
+ const frozenColsWidth = _this.getFrozenColsWidth(), frozenColsOffset = null !== (_b = null === (_a = _this.getFrozenColsOffset) || void 0 === _a ? void 0 : _a.call(_this)) && void 0 !== _b ? _b : 0, frozenColsScrollLeft = null !== (_d = null === (_c = _this.getFrozenColsScrollLeft) || void 0 === _c ? void 0 : _c.call(_this)) && void 0 !== _d ? _d : 0;
210
221
  let leftFrozen = !1;
211
- (x -= _this.tableX) > 0 && x < _this.getFrozenColsWidth() && (leftFrozen = !0);
222
+ x > 0 && x < frozenColsWidth && (leftFrozen = !0);
212
223
  let rightFrozen = !1;
213
224
  x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth && x <= _this.getAllColsWidth() && (rightFrozen = !0);
214
- const colInfo = getTargetColAtConsiderRightFrozen((leftFrozen || rightFrozen ? x : x + _this.scrollLeft) + _this.tableX, rightFrozen, _this);
225
+ const colInfo = getTargetColAtConsiderRightFrozen((leftFrozen ? x + frozenColsScrollLeft : rightFrozen ? x : x + _this.scrollLeft + frozenColsOffset) + _this.tableX, rightFrozen, _this);
215
226
  if (colInfo) {
216
227
  const {col: col} = colInfo;
217
228
  return col;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/utils/get-cell-position.ts"],"names":[],"mappings":"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","file":"get-cell-position.js","sourcesContent":["import type { CellAddressWithBound, ColumnInfo, RowInfo } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { _getTargetFrozenColAt, _getTargetFrozenRowAt } from '../tableHelper';\n\n/**\n * 根据y值计算所在行\n * @param absoluteY 相对于表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getRowAt(absoluteY: number, _this: BaseTableAPI): RowInfo {\n const frozen = _getTargetFrozenRowAt(_this, absoluteY);\n if (frozen) {\n return frozen;\n }\n return getTargetRowAt(absoluteY, _this) ?? { top: -1, row: -1, bottom: -1, height: -1 };\n}\n\n/**\n * 根据x值计算所在列\n * @param absoluteX 相对于表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getColAt(absoluteX: number, _this: BaseTableAPI): ColumnInfo {\n const frozen = _getTargetFrozenColAt(_this, absoluteX);\n if (frozen) {\n return frozen;\n }\n return getTargetColAt(absoluteX, _this) ?? { left: -1, col: -1, right: -1, width: 1 };\n}\n/**\n * 根据坐标值获取行列位置,index和rect范围\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @param absoluteY 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getCellAt(absoluteX: number, absoluteY: number, _this: BaseTableAPI): CellAddressWithBound {\n const rowInfo = getRowAt(absoluteY, _this);\n const { row, top, bottom, height } = rowInfo;\n const colInfo = getColAt(absoluteX, _this);\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getTargetColAt(absoluteX: number, _this: BaseTableAPI): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n const findBefore = (startCol: number, startRight: number): ColumnInfo | null => {\n let right = startRight;\n for (let col = startCol; col >= 0; col--) {\n const width = _this.getColWidth(col);\n const left = right - width;\n if (Math.round(left) <= absoluteX && absoluteX < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n right = left;\n }\n return null;\n };\n const findAfter = (startCol: number, startRight: number): ColumnInfo | null => {\n let left = startRight - _this.getColWidth(startCol);\n const { colCount } = _this.internalProps;\n for (let col = startCol; col < colCount; col++) {\n const width = _this.getColWidth(col);\n const right = left + width;\n if (Math.round(left) <= absoluteX && absoluteX < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n left = right;\n }\n return null;\n };\n //计算这个位置处是第几行\n const candCol = computeTargetColByX(absoluteX, _this);\n const right = _this.getColsWidth(0, candCol);\n if (absoluteX >= right) {\n return findAfter(candCol, right);\n }\n return findBefore(candCol, right);\n}\n\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getTargetRowAt(absoluteY: number, _this: BaseTableAPI): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n\n const floorOrRound = _this.options.customConfig?._disableColumnAndRowSizeRound === true ? Math.floor : Math.round;\n\n const findBefore = (startRow: number, startBottom: number): RowInfo | null => {\n let bottom = startBottom;\n for (let row = startRow; row >= 0; row--) {\n const height = _this.getRowHeight(row);\n const top = bottom - height;\n if (floorOrRound(top) <= floorOrRound(absoluteY) && floorOrRound(absoluteY) < floorOrRound(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n bottom = top;\n }\n return null;\n };\n const findAfter = (startRow: number, startBottom: number): RowInfo | null => {\n let top = startBottom - _this.getRowHeight(startRow);\n const { rowCount } = _this.internalProps;\n for (let row = startRow; row < rowCount; row++) {\n const height = _this.getRowHeight(row);\n const bottom = top + height;\n if (floorOrRound(top) <= floorOrRound(absoluteY) && floorOrRound(absoluteY) < floorOrRound(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n top = bottom;\n }\n return null;\n };\n // const candRow = Math.min(\n // Math.ceil(absoluteY / this.internalProps.defaultRowHeight),\n // this.rowCount - 1\n // );\n //计算这个位置处是第几行\n const candRow = computeTargetRowByY(absoluteY, _this);\n const bottom = _this.getRowsHeight(0, candRow);\n if (absoluteY >= bottom) {\n return findAfter(candRow, bottom);\n }\n return findBefore(candRow, bottom);\n}\n\n/**\n * 根据x获取右侧冻结中该位置所处列值\n * @param table\n * @param absoluteX 屏幕坐标x值\n * @returns\n */\nexport function getTargetColAtConsiderRightFrozen(\n absoluteX: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n absoluteX = absoluteX - _this.tableX;\n if (\n isConsider &&\n absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n absoluteX < _this.tableNoFrameWidth &&\n absoluteX <= _this.getAllColsWidth()\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {\n return {\n col: _this.colCount - i - 1,\n left: undefined,\n right: undefined,\n width: undefined\n };\n }\n }\n }\n return getTargetColAt(absoluteX, _this);\n}\n/**\n * 根据y获取底部冻结该位置所处行值\n * @param table\n * @param absoluteX 屏幕坐标y值\n * @param isConsider 是否考Y值是否在底部冻结区域内\n * @returns\n */\nexport function getTargetRowAtConsiderBottomFrozen(\n absoluteY: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n absoluteY = absoluteY - _this.tableY;\n if (\n isConsider &&\n absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n absoluteY < _this.tableNoFrameHeight\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {\n return {\n row: _this.rowCount - i - 1,\n top: undefined,\n bottom: undefined,\n height: undefined\n };\n }\n }\n }\n return getTargetRowAt(absoluteY, _this);\n}\n/**\n * 根据y值(包括了scroll的)计算所在行\n * @param this\n * @param absoluteY 左边y值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetRowByY(absoluteY: number, _this: BaseTableAPI): number {\n let defaultRowHeight = _this.defaultRowHeight;\n\n //使用二分法计算出row\n if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {\n defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;\n // let startRow = 0;\n // let endRow = this.rowCount - 1;\n // while (endRow - startRow > 1) {\n // const midRow = Math.floor((startRow + endRow) / 2);\n // if (absoluteY < this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // endRow = midRow;\n // } else if (absoluteY > this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // startRow = midRow;\n // } else {\n // return midRow;\n // }\n // }\n // return endRow;\n }\n //否则使用defaultRowHeight大约计算一个row\n return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);\n}\n\n/**\n * 根据x值(包括了scroll的)计算所在列 主要借助colRangeWidthsMap缓存来提高计算效率\n * @param this\n * @param absoluteX 左边x值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetColByX(absoluteX: number, _this: BaseTableAPI): number {\n //使用二分法计算出col\n if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {\n let startCol = 0;\n let endCol = _this.colCount - 1;\n while (endCol - startCol > 1) {\n const midCol = Math.floor((startCol + endCol) / 2);\n if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n endCol = midCol;\n } else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n startCol = midCol;\n } else {\n return midCol;\n }\n }\n return endCol;\n }\n //否则使用defaultColWidth大约计算一个col\n return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);\n}\n\n/**\n * 获取屏幕坐标对应的单元格信息,考虑滚动\n * @param this\n * @param relativeX 左边x值,相对于容器左上角,考虑表格滚动\n * @param relativeY 左边y值,相对于容器左上角,考虑表格滚动\n * @returns\n */\nexport function getCellAtRelativePosition(x: number, y: number, _this: BaseTableAPI): CellAddressWithBound {\n // table border and outer component\n x -= _this.tableX;\n y -= _this.tableY;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < _this.getFrozenColsWidth()) {\n leftFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n // 加上 tableX 和 tableY 是因为在考虑冻结列和冻结行时,需要将坐标转换为相对于表格左上角的坐标\n const colInfo = getTargetColAtConsiderRightFrozen(\n (leftFrozen || rightFrozen ? x : x + _this.scrollLeft) + _this.tableX,\n rightFrozen,\n _this\n );\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n (topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY,\n bottomFrozen,\n _this\n );\n\n if (colInfo && rowInfo) {\n const { row, top, bottom, height } = rowInfo;\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n }\n return { col: -1, row: -1 };\n}\n\nexport function getColAtRelativePosition(x: number, _this: BaseTableAPI): number {\n // table border and outer component\n x -= _this.tableX;\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < _this.getFrozenColsWidth()) {\n leftFrozen = true;\n }\n\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n // 加上 tableX 是因为在考虑冻结列时,需要将坐标转换为相对于表格左上角的坐标\n const colInfo = getTargetColAtConsiderRightFrozen(\n (leftFrozen || rightFrozen ? x : x + _this.scrollLeft) + _this.tableX,\n rightFrozen,\n _this\n );\n\n if (colInfo) {\n const { col } = colInfo;\n\n return col;\n }\n return -1;\n}\n\nexport function getRowAtRelativePosition(y: number, _this: BaseTableAPI): number {\n // table border and outer component\n y -= _this.tableY;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n\n // 加上 tableY 是因为在考虑冻结行时,需要将坐标转换为相对于表格左上角的坐标\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n (topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY,\n bottomFrozen,\n _this\n );\n\n if (rowInfo) {\n const { row } = rowInfo;\n\n return row;\n }\n return -1;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/utils/get-cell-position.ts"],"names":[],"mappings":"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","file":"get-cell-position.js","sourcesContent":["import type { CellAddressWithBound, ColumnInfo, RowInfo } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { _getTargetFrozenColAt, _getTargetFrozenRowAt } from '../tableHelper';\n\n/**\n * 根据y值计算所在行\n * @param absoluteY 相对于表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getRowAt(absoluteY: number, _this: BaseTableAPI): RowInfo {\n const frozen = _getTargetFrozenRowAt(_this, absoluteY);\n if (frozen) {\n return frozen;\n }\n return getTargetRowAt(absoluteY, _this) ?? { top: -1, row: -1, bottom: -1, height: -1 };\n}\n\n/**\n * 根据x值计算所在列\n * @param absoluteX 相对于表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getColAt(absoluteX: number, _this: BaseTableAPI): ColumnInfo {\n const frozen = _getTargetFrozenColAt(_this, absoluteX);\n if (frozen) {\n return frozen;\n }\n return getTargetColAt(absoluteX, _this) ?? { left: -1, col: -1, right: -1, width: 1 };\n}\n/**\n * 根据坐标值获取行列位置,index和rect范围\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @param absoluteY 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getCellAt(absoluteX: number, absoluteY: number, _this: BaseTableAPI): CellAddressWithBound {\n const rowInfo = getRowAt(absoluteY, _this);\n const { row, top, bottom, height } = rowInfo;\n const colInfo = getColAt(absoluteX, _this);\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getTargetColAt(absoluteX: number, _this: BaseTableAPI): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n const findBefore = (startCol: number, startRight: number): ColumnInfo | null => {\n let right = startRight;\n for (let col = startCol; col >= 0; col--) {\n const width = _this.getColWidth(col);\n const left = right - width;\n if (Math.round(left) <= absoluteX && absoluteX < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n right = left;\n }\n return null;\n };\n const findAfter = (startCol: number, startRight: number): ColumnInfo | null => {\n let left = startRight - _this.getColWidth(startCol);\n const { colCount } = _this.internalProps;\n for (let col = startCol; col < colCount; col++) {\n const width = _this.getColWidth(col);\n const right = left + width;\n if (Math.round(left) <= absoluteX && absoluteX < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n left = right;\n }\n return null;\n };\n //计算这个位置处是第几行\n const candCol = computeTargetColByX(absoluteX, _this);\n const right = _this.getColsWidth(0, candCol);\n if (absoluteX >= right) {\n return findAfter(candCol, right);\n }\n return findBefore(candCol, right);\n}\n\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getTargetRowAt(absoluteY: number, _this: BaseTableAPI): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n\n const floorOrRound = _this.options.customConfig?._disableColumnAndRowSizeRound === true ? Math.floor : Math.round;\n\n const findBefore = (startRow: number, startBottom: number): RowInfo | null => {\n let bottom = startBottom;\n for (let row = startRow; row >= 0; row--) {\n const height = _this.getRowHeight(row);\n const top = bottom - height;\n if (floorOrRound(top) <= floorOrRound(absoluteY) && floorOrRound(absoluteY) < floorOrRound(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n bottom = top;\n }\n return null;\n };\n const findAfter = (startRow: number, startBottom: number): RowInfo | null => {\n let top = startBottom - _this.getRowHeight(startRow);\n const { rowCount } = _this.internalProps;\n for (let row = startRow; row < rowCount; row++) {\n const height = _this.getRowHeight(row);\n const bottom = top + height;\n if (floorOrRound(top) <= floorOrRound(absoluteY) && floorOrRound(absoluteY) < floorOrRound(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n top = bottom;\n }\n return null;\n };\n // const candRow = Math.min(\n // Math.ceil(absoluteY / this.internalProps.defaultRowHeight),\n // this.rowCount - 1\n // );\n //计算这个位置处是第几行\n const candRow = computeTargetRowByY(absoluteY, _this);\n const bottom = _this.getRowsHeight(0, candRow);\n if (absoluteY >= bottom) {\n return findAfter(candRow, bottom);\n }\n return findBefore(candRow, bottom);\n}\n\n/**\n * 根据x获取右侧冻结中该位置所处列值\n * @param table\n * @param absoluteX 屏幕坐标x值\n * @returns\n */\nexport function getTargetColAtConsiderRightFrozen(\n absoluteX: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n absoluteX = absoluteX - _this.tableX;\n const rightFrozenScrollLeft = _this.getRightFrozenColsScrollLeft?.() ?? 0;\n if (\n isConsider &&\n absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n absoluteX < _this.tableNoFrameWidth &&\n absoluteX <= _this.getAllColsWidth()\n ) {\n // 命中测试需要将“右冻结视口坐标”映射到“右冻结内容坐标”:\n // 右冻结内容在视口内可滚动时,实际的列位置会整体随 scrollLeft 平移。\n absoluteX -= rightFrozenScrollLeft;\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {\n return {\n col: _this.colCount - i - 1,\n left: undefined,\n right: undefined,\n width: undefined\n };\n }\n }\n }\n return getTargetColAt(absoluteX, _this);\n}\n/**\n * 根据y获取底部冻结该位置所处行值\n * @param table\n * @param absoluteX 屏幕坐标y值\n * @param isConsider 是否考Y值是否在底部冻结区域内\n * @returns\n */\nexport function getTargetRowAtConsiderBottomFrozen(\n absoluteY: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n absoluteY = absoluteY - _this.tableY;\n if (\n isConsider &&\n absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n absoluteY < _this.tableNoFrameHeight\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {\n return {\n row: _this.rowCount - i - 1,\n top: undefined,\n bottom: undefined,\n height: undefined\n };\n }\n }\n }\n return getTargetRowAt(absoluteY, _this);\n}\n/**\n * 根据y值(包括了scroll的)计算所在行\n * @param this\n * @param absoluteY 左边y值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetRowByY(absoluteY: number, _this: BaseTableAPI): number {\n let defaultRowHeight = _this.defaultRowHeight;\n\n //使用二分法计算出row\n if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {\n defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;\n // let startRow = 0;\n // let endRow = this.rowCount - 1;\n // while (endRow - startRow > 1) {\n // const midRow = Math.floor((startRow + endRow) / 2);\n // if (absoluteY < this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // endRow = midRow;\n // } else if (absoluteY > this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // startRow = midRow;\n // } else {\n // return midRow;\n // }\n // }\n // return endRow;\n }\n //否则使用defaultRowHeight大约计算一个row\n return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);\n}\n\n/**\n * 根据x值(包括了scroll的)计算所在列 主要借助colRangeWidthsMap缓存来提高计算效率\n * @param this\n * @param absoluteX 左边x值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetColByX(absoluteX: number, _this: BaseTableAPI): number {\n //使用二分法计算出col\n if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {\n let startCol = 0;\n let endCol = _this.colCount - 1;\n while (endCol - startCol > 1) {\n const midCol = Math.floor((startCol + endCol) / 2);\n if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n endCol = midCol;\n } else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n startCol = midCol;\n } else {\n return midCol;\n }\n }\n return endCol;\n }\n //否则使用defaultColWidth大约计算一个col\n return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);\n}\n\n/**\n * 获取屏幕坐标对应的单元格信息,考虑滚动\n * @param this\n * @param relativeX 左边x值,相对于容器左上角,考虑表格滚动\n * @param relativeY 左边y值,相对于容器左上角,考虑表格滚动\n * @returns\n */\nexport function getCellAtRelativePosition(x: number, y: number, _this: BaseTableAPI): CellAddressWithBound {\n // table border and outer component\n x -= _this.tableX;\n y -= _this.tableY;\n\n const frozenColsWidth = _this.getFrozenColsWidth();\n const frozenColsOffset = _this.getFrozenColsOffset?.() ?? 0;\n const frozenColsScrollLeft = _this.getFrozenColsScrollLeft?.() ?? 0;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < frozenColsWidth) {\n leftFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n // 加上 tableX 和 tableY 是因为在考虑冻结列和冻结行时,需要将坐标转换为相对于表格左上角的坐标\n const colInfo = getTargetColAtConsiderRightFrozen(\n (leftFrozen ? x + frozenColsScrollLeft : rightFrozen ? x : x + _this.scrollLeft + frozenColsOffset) + _this.tableX,\n rightFrozen,\n _this\n );\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n (topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY,\n bottomFrozen,\n _this\n );\n\n if (colInfo && rowInfo) {\n const { row, top, bottom, height } = rowInfo;\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n }\n return { col: -1, row: -1 };\n}\n\nexport function getColAtRelativePosition(x: number, _this: BaseTableAPI): number {\n // table border and outer component\n x -= _this.tableX;\n\n const frozenColsWidth = _this.getFrozenColsWidth();\n const frozenColsOffset = _this.getFrozenColsOffset?.() ?? 0;\n const frozenColsScrollLeft = _this.getFrozenColsScrollLeft?.() ?? 0;\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < frozenColsWidth) {\n leftFrozen = true;\n }\n\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n // 加上 tableX 是因为在考虑冻结列时,需要将坐标转换为相对于表格左上角的坐标\n const colInfo = getTargetColAtConsiderRightFrozen(\n (leftFrozen ? x + frozenColsScrollLeft : rightFrozen ? x : x + _this.scrollLeft + frozenColsOffset) + _this.tableX,\n rightFrozen,\n _this\n );\n\n if (colInfo) {\n const { col } = colInfo;\n\n return col;\n }\n return -1;\n}\n\nexport function getRowAtRelativePosition(y: number, _this: BaseTableAPI): number {\n // table border and outer component\n y -= _this.tableY;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n\n // 加上 tableY 是因为在考虑冻结行时,需要将坐标转换为相对于表格左上角的坐标\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n (topFrozen || bottomFrozen ? y : y + _this.scrollTop) + _this.tableY,\n bottomFrozen,\n _this\n );\n\n if (rowInfo) {\n const { row } = rowInfo;\n\n return row;\n }\n return -1;\n}\n"]}
@@ -77,4 +77,5 @@ function dateFormat(baseField, formatString, utcOutput, mthNames, dayNames) {
77
77
  Object.defineProperty(exports, "__esModule", {
78
78
  value: !0
79
79
  }), exports.dateFormat = exports.numberFormat = void 0, exports.numberFormat = numberFormat,
80
- exports.dateFormat = dateFormat;
80
+ exports.dateFormat = dateFormat;
81
+ //# sourceMappingURL=DataStatistics.js.map
@@ -168,5 +168,4 @@ function dealWithValidateValue(validateValue, editManager, oldValue, resolve) {
168
168
  !0) : (null == resolve || resolve(!1), !1);
169
169
  }
170
170
 
171
- //# sourceMappingURL=edit-manager.js.map
172
171
  exports.EditManager = EditManager;
@@ -239,19 +239,21 @@ function bindContainerDomListener(eventManager) {
239
239
  table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50),
240
240
  table.eventManager.inertiaScroll.startInertia(table.eventManager.scrollXSpeed, table.eventManager.scrollYSpeed, 1),
241
241
  table.eventManager.inertiaScroll.setScrollHandle(((dx, dy) => {
242
- var _a;
242
+ var _a, _b, _c;
243
243
  let selectX, selectY;
244
244
  (0, scroll_1.handleWhell)({
245
245
  deltaX: -dx,
246
246
  deltaY: -dy
247
- }, table.stateManager, !1), bottom ? selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20 : top && (selectY = table.scrollTop + topFrozenRowHeight + 20),
248
- right ? selectX = table.scrollLeft + drawRange.width - rightFrozenColsWidth - 20 : left && (selectX = table.scrollLeft + leftFrozenColsWidth + 20);
247
+ }, table.stateManager, !1);
248
+ const frozenOffset = null !== (_b = null === (_a = table.getFrozenColsOffset) || void 0 === _a ? void 0 : _a.call(table)) && void 0 !== _b ? _b : 0;
249
+ bottom ? selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20 : top && (selectY = table.scrollTop + topFrozenRowHeight + 20),
250
+ right ? selectX = table.scrollLeft + frozenOffset + drawRange.width - rightFrozenColsWidth - 20 : left && (selectX = table.scrollLeft + frozenOffset + leftFrozenColsWidth + 20);
249
251
  let considerFrozenY = !1, considerFrozenX = !1;
250
252
  right || left || (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth || x > 0 && x < table.getFrozenColsWidth() ? (selectX = x,
251
- considerFrozenX = !0) : selectX = table.scrollLeft + x), bottom || top || (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight || y > 0 && y < table.getFrozenRowsHeight() ? (selectY = y,
253
+ considerFrozenX = !0) : selectX = table.scrollLeft + frozenOffset + x), bottom || top || (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight || y > 0 && y < table.getFrozenRowsHeight() ? (selectY = y,
252
254
  considerFrozenY = !0) : selectY = table.scrollTop + y), table.stateManager.updateInteractionState(ts_types_1.InteractionState.grabing);
253
255
  const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX), targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);
254
- !(null === (_a = table.options.select) || void 0 === _a ? void 0 : _a.disableDragSelect) && (0,
256
+ !(null === (_c = table.options.select) || void 0 === _c ? void 0 : _c.disableDragSelect) && (0,
255
257
  vutils_1.isValid)(targetCol) && (0, vutils_1.isValid)(targetRow) && table.stateManager.updateSelectPos("row" === table.stateManager.select.selectInline ? table.colCount - 1 : targetCol.col, "col" === table.stateManager.select.selectInline ? table.rowCount - 1 : targetRow.row, !1, !1, !1, !1);
256
258
  }));
257
259
  } else table.eventManager.inertiaScroll.isInertiaScrolling() ? table.eventManager.inertiaScroll.endInertia() : table.eventManager.scrollYSpeed = 0;