@visactor/vtable 1.5.3-alpha.1 → 1.6.0-alpha.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 (81) hide show
  1. package/cjs/ListTable.d.ts +1 -1
  2. package/cjs/ListTable.js +6 -86
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -1
  5. package/cjs/PivotTable.js +3 -3
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.js +1 -1
  8. package/cjs/core/BaseTable.js.map +1 -1
  9. package/cjs/core/record-helper.d.ts +2 -0
  10. package/cjs/core/record-helper.js +109 -2
  11. package/cjs/core/record-helper.js.map +1 -1
  12. package/cjs/core/tableHelper.js.map +1 -1
  13. package/cjs/data/CachedDataSource.d.ts +1 -1
  14. package/cjs/data/CachedDataSource.js +25 -1
  15. package/cjs/data/CachedDataSource.js.map +1 -1
  16. package/cjs/dataset/dataset.js +0 -1
  17. package/cjs/dataset/statistics-helper.js +1 -0
  18. package/cjs/edit/edit-manager.d.ts +1 -1
  19. package/cjs/edit/edit-manager.js +3 -3
  20. package/cjs/edit/edit-manager.js.map +1 -1
  21. package/cjs/event/listener/container-dom.js +6 -5
  22. package/cjs/event/listener/container-dom.js.map +1 -1
  23. package/cjs/event/scroll.js +6 -4
  24. package/cjs/event/scroll.js.map +1 -1
  25. package/cjs/index.d.ts +1 -1
  26. package/cjs/index.js +1 -1
  27. package/cjs/index.js.map +1 -1
  28. package/cjs/scenegraph/group-creater/cell-helper.js +3 -1
  29. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  30. package/cjs/scenegraph/group-creater/column-helper.js +3 -1
  31. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  32. package/cjs/state/select/is-cell-select-highlight.d.ts +1 -0
  33. package/cjs/state/select/is-cell-select-highlight.js +8 -2
  34. package/cjs/state/select/is-cell-select-highlight.js.map +1 -1
  35. package/cjs/themes/theme.js +3 -2
  36. package/cjs/themes/theme.js.map +1 -1
  37. package/cjs/ts-types/table-engine.d.ts +2 -1
  38. package/cjs/ts-types/table-engine.js.map +1 -1
  39. package/cjs/vrender.js.map +1 -1
  40. package/dist/vtable.js +303 -196
  41. package/dist/vtable.min.js +2 -2
  42. package/es/ListTable.d.ts +1 -1
  43. package/es/ListTable.js +6 -90
  44. package/es/ListTable.js.map +1 -1
  45. package/es/PivotTable.d.ts +1 -1
  46. package/es/PivotTable.js +3 -3
  47. package/es/PivotTable.js.map +1 -1
  48. package/es/core/BaseTable.js +1 -1
  49. package/es/core/BaseTable.js.map +1 -1
  50. package/es/core/record-helper.d.ts +2 -0
  51. package/es/core/record-helper.js +112 -0
  52. package/es/core/record-helper.js.map +1 -1
  53. package/es/core/tableHelper.js.map +1 -1
  54. package/es/data/CachedDataSource.d.ts +1 -1
  55. package/es/data/CachedDataSource.js +25 -1
  56. package/es/data/CachedDataSource.js.map +1 -1
  57. package/es/dataset/dataset.js +1 -2
  58. package/es/dataset/statistics-helper.js +2 -1
  59. package/es/edit/edit-manager.d.ts +1 -1
  60. package/es/edit/edit-manager.js +4 -2
  61. package/es/edit/edit-manager.js.map +1 -1
  62. package/es/event/listener/container-dom.js +7 -4
  63. package/es/event/listener/container-dom.js.map +1 -1
  64. package/es/event/scroll.js +6 -4
  65. package/es/event/scroll.js.map +1 -1
  66. package/es/index.d.ts +1 -1
  67. package/es/index.js +1 -1
  68. package/es/index.js.map +1 -1
  69. package/es/scenegraph/group-creater/cell-helper.js +2 -1
  70. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  71. package/es/scenegraph/group-creater/column-helper.js +2 -1
  72. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  73. package/es/state/select/is-cell-select-highlight.d.ts +1 -0
  74. package/es/state/select/is-cell-select-highlight.js +5 -0
  75. package/es/state/select/is-cell-select-highlight.js.map +1 -1
  76. package/es/themes/theme.js +3 -1
  77. package/es/themes/theme.js.map +1 -1
  78. package/es/ts-types/table-engine.d.ts +2 -1
  79. package/es/ts-types/table-engine.js.map +1 -1
  80. package/es/vrender.js.map +1 -1
  81. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/CachedDataSource.ts"],"names":[],"mappings":"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","file":"CachedDataSource.js","sourcesContent":["import { isArray, isValid } from '@visactor/vutils';\nimport {\n AggregationType,\n type FieldData,\n type FieldDef,\n type IListTableDataConfig,\n type IPagination,\n type MaybePromise,\n type MaybePromiseOrUndefined\n} from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\nimport type { DataSourceParam } from './DataSource';\nimport { DataSource } from './DataSource';\n\n/** @private */\nfunction _setFieldCache(\n fCache: { [index: number]: Map<FieldDef, any> },\n index: number,\n field: FieldDef,\n\n value: any\n): void {\n const recCache = fCache[index] || (fCache[index] = new Map());\n recCache.set(field, value);\n}\n/**\n * table data source for caching Promise data\n *\n * @classdesc VTable.data.CachedDataSource\n * @memberof VTable.data\n */\nexport class CachedDataSource extends DataSource {\n /**\n * record cache 当用户定义的CachedDataSource.get为promise的时候 可以用rCache缓存已获取数据条目\n */\n private _recordCache: any[];\n /**\n * field cache 当用户定义field为promise的时候 可以用fCache缓存已获取值\n */\n private _fieldCache: { [index: number]: Map<FieldDef, any> };\n static get EVENT_TYPE(): typeof DataSource.EVENT_TYPE {\n return DataSource.EVENT_TYPE;\n }\n static ofArray(\n array: any[],\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ): CachedDataSource {\n return new CachedDataSource(\n {\n get: (index: number): any => {\n // if (Array.isArray(index)) {\n // return getValueFromDeepArray(array, index);\n // }\n return array[index];\n },\n length: array.length,\n records: array\n },\n dataConfig,\n pagination,\n columnObjs,\n rowHierarchyType,\n hierarchyExpandLevel\n );\n }\n\n groupAggregator: any;\n // _originalRecords: any[];\n constructor(\n opt?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n if (isArray(dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n }\n super(opt, dataConfig, pagination, columnObjs, rowHierarchyType, hierarchyExpandLevel);\n this._recordCache = [];\n this._fieldCache = {};\n }\n protected getOriginalRecord(index: number): MaybePromiseOrUndefined {\n if (this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getOriginalRecord(index);\n }\n protected getRawRecord(index: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[index as number]) {\n return this.beforeChangedRecordsMap[index as number];\n }\n if (this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getRawRecord(index);\n }\n protected getOriginalField<F extends FieldDef>(\n index: number,\n field: F,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n const rowCache = this._fieldCache && this._fieldCache[index];\n if (rowCache) {\n const cache = rowCache.get(field);\n if (cache) {\n return cache;\n }\n }\n return super.getOriginalField(index, field, col, row, table);\n }\n\n clearCache(): void {\n if (this._recordCache) {\n this._recordCache = [];\n }\n if (this._fieldCache) {\n this._fieldCache = {};\n }\n }\n\n protected fieldPromiseCallBack<F extends FieldDef>(index: number, field: F, value: MaybePromiseOrUndefined): void {\n _setFieldCache(this._fieldCache, index, field, value);\n }\n protected recordPromiseCallBack(index: number, record: MaybePromiseOrUndefined): void {\n this._recordCache[index] = record;\n }\n get records(): any[] {\n return Array.isArray(this._recordCache) && this._recordCache.length > 0 ? this._recordCache : super.records;\n }\n\n release(): void {\n super.release?.();\n this._recordCache = null;\n this._fieldCache = null;\n }\n\n _generateFieldAggragations() {\n super._generateFieldAggragations();\n // groupby aggragations\n if (isArray(this.dataConfig?.groupByRules)) {\n // const groupByKey = this.dataConfig.groupByRules[0];\n const groupByKeys = this.dataConfig.groupByRules;\n this.groupAggregator = new this.registedAggregators[AggregationType.CUSTOM]({\n dimension: '',\n aggregationFun: (values: any, records: any, field: any) => {\n const groupMap = new Map();\n const groupResult = [] as any[];\n for (let i = 0; i < records.length; i++) {\n dealWithGroup(records[i], groupResult, groupMap, groupByKeys, 0);\n // const record = records[i];\n // const value = record[groupByKey];\n // if (value !== undefined) {\n // if (groupMap.has(value)) {\n // const index = groupMap.get(value);\n // groupResult[index].children.push(record);\n // } else {\n // groupMap.set(value, groupResult.length);\n // groupResult.push({\n // vTableMerge: true,\n // vtableMergeName: value,\n // children: [] as any,\n // map: new Map()\n // });\n // }\n // }\n }\n return groupResult;\n }\n });\n this.fieldAggregators.push(this.groupAggregator);\n }\n }\n\n processRecords(records: any[]) {\n const result = super.processRecords(records);\n const groupResult = this.groupAggregator?.value();\n if (groupResult) {\n // this._originalRecords = result;\n return groupResult;\n }\n return result;\n }\n\n getGroupLength() {\n return this.dataConfig?.groupByRules?.length ?? 0;\n }\n\n updateGroup() {\n (this as any)._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n this.sourceLength = this.source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this.sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this.sourceLength;\n this.pagination.totalCount = this.sourceLength;\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n addRecordsForGroup(recordArr: any) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n this.dataSourceObj.records.push(...recordArr);\n\n this.updateGroup();\n }\n\n deleteRecordsForGroup(recordIndexs: number[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return;\n }\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this.sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n this.dataSourceObj.records.splice(recordIndex, 1);\n this.sourceLength -= 1;\n }\n\n this.updateGroup();\n }\n\n updateRecordsForGroup(records: any[], recordIndexs: number[]) {\n // const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this.sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n // realDeletedRecordIndexs.push(recordIndex);\n this.dataSourceObj.records[recordIndex] = records[index];\n }\n\n this.updateGroup();\n }\n}\n\nfunction dealWithGroup(record: any, children: any[], map: Map<number, any>, groupByKeys: string[], level: number) {\n const groupByKey = groupByKeys[level];\n if (!isValid(groupByKey)) {\n children.push(record);\n return;\n }\n const value = record[groupByKey];\n if (value !== undefined) {\n if (map.has(value)) {\n const index = map.get(value);\n // children[index].children.push(record);\n dealWithGroup(record, children[index].children, children[index].map, groupByKeys, level + 1);\n } else {\n map.set(value, children.length);\n children.push({\n vTableMerge: true,\n vtableMergeName: value,\n children: [] as any,\n map: new Map()\n });\n dealWithGroup(\n record,\n children[children.length - 1].children,\n children[children.length - 1].map,\n groupByKeys,\n level + 1\n );\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/data/CachedDataSource.ts"],"names":[],"mappings":"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","file":"CachedDataSource.js","sourcesContent":["import { isArray, isValid } from '@visactor/vutils';\nimport {\n AggregationType,\n HierarchyState,\n type FieldData,\n type FieldDef,\n type IListTableDataConfig,\n type IPagination,\n type MaybePromise,\n type MaybePromiseOrUndefined\n} from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\nimport type { DataSourceParam } from './DataSource';\nimport { DataSource } from './DataSource';\n\n/** @private */\nfunction _setFieldCache(\n fCache: { [index: number]: Map<FieldDef, any> },\n index: number,\n field: FieldDef,\n\n value: any\n): void {\n const recCache = fCache[index] || (fCache[index] = new Map());\n recCache.set(field, value);\n}\n/**\n * table data source for caching Promise data\n *\n * @classdesc VTable.data.CachedDataSource\n * @memberof VTable.data\n */\nexport class CachedDataSource extends DataSource {\n /**\n * record cache 当用户定义的CachedDataSource.get为promise的时候 可以用rCache缓存已获取数据条目\n */\n private _recordCache: any[];\n /**\n * field cache 当用户定义field为promise的时候 可以用fCache缓存已获取值\n */\n private _fieldCache: { [index: number]: Map<FieldDef, any> };\n\n groupAggregator: any;\n\n static get EVENT_TYPE(): typeof DataSource.EVENT_TYPE {\n return DataSource.EVENT_TYPE;\n }\n static ofArray(\n array: any[],\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ): CachedDataSource {\n return new CachedDataSource(\n {\n get: (index: number): any => {\n // if (Array.isArray(index)) {\n // return getValueFromDeepArray(array, index);\n // }\n return array[index];\n },\n length: array.length,\n records: array\n },\n dataConfig,\n pagination,\n columnObjs,\n rowHierarchyType,\n hierarchyExpandLevel\n );\n }\n\n // _originalRecords: any[];\n constructor(\n opt?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n if (isArray(dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n }\n super(opt, dataConfig, pagination, columnObjs, rowHierarchyType, hierarchyExpandLevel);\n this._recordCache = [];\n this._fieldCache = {};\n }\n protected getOriginalRecord(index: number): MaybePromiseOrUndefined {\n if (this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getOriginalRecord(index);\n }\n protected getRawRecord(index: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[index as number]) {\n return this.beforeChangedRecordsMap[index as number];\n }\n if (this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getRawRecord(index);\n }\n protected getOriginalField<F extends FieldDef>(\n index: number,\n field: F,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n const rowCache = this._fieldCache && this._fieldCache[index];\n if (rowCache) {\n const cache = rowCache.get(field);\n if (cache) {\n return cache;\n }\n }\n return super.getOriginalField(index, field, col, row, table);\n }\n\n clearCache(): void {\n if (this._recordCache) {\n this._recordCache = [];\n }\n if (this._fieldCache) {\n this._fieldCache = {};\n }\n }\n\n protected fieldPromiseCallBack<F extends FieldDef>(index: number, field: F, value: MaybePromiseOrUndefined): void {\n _setFieldCache(this._fieldCache, index, field, value);\n }\n protected recordPromiseCallBack(index: number, record: MaybePromiseOrUndefined): void {\n this._recordCache[index] = record;\n }\n get records(): any[] {\n return Array.isArray(this._recordCache) && this._recordCache.length > 0 ? this._recordCache : super.records;\n }\n\n release(): void {\n super.release?.();\n this._recordCache = null;\n this._fieldCache = null;\n }\n\n _generateFieldAggragations() {\n super._generateFieldAggragations();\n // groupby aggragations\n if (isArray(this.dataConfig?.groupByRules)) {\n // const groupByKey = this.dataConfig.groupByRules[0];\n const groupByKeys = this.dataConfig.groupByRules;\n this.groupAggregator = new this.registedAggregators[AggregationType.CUSTOM]({\n dimension: '',\n aggregationFun: (values: any, records: any, field: any) => {\n const groupMap = new Map();\n const groupResult = [] as any[];\n for (let i = 0; i < records.length; i++) {\n dealWithGroup(records[i], groupResult, groupMap, groupByKeys, 0);\n }\n return groupResult;\n }\n });\n this.fieldAggregators.push(this.groupAggregator);\n }\n }\n\n processRecords(records: any[]) {\n const result = super.processRecords(records);\n const groupResult = this.groupAggregator?.value();\n if (groupResult) {\n // this._originalRecords = result;\n return groupResult;\n }\n return result;\n }\n\n getGroupLength() {\n return this.dataConfig?.groupByRules?.length ?? 0;\n }\n\n updateGroup() {\n this.clearCache();\n\n const oldSource = this.source;\n (this as any)._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n if (oldSource) {\n syncGroupCollapseState(oldSource, this.source);\n }\n\n // syncGroupCollapseState(this.source, newSource.source);\n this.sourceLength = this.source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this.sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this.sourceLength;\n this.pagination.totalCount = this.sourceLength;\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n addRecordsForGroup(recordArr: any) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n this.dataSourceObj.records.push(...recordArr);\n\n this.updateGroup();\n }\n\n deleteRecordsForGroup(recordIndexs: number[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return;\n }\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this.sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n this.dataSourceObj.records.splice(recordIndex, 1);\n this.sourceLength -= 1;\n }\n\n this.updateGroup();\n }\n\n updateRecordsForGroup(records: any[], recordIndexs: number[]) {\n // const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this.sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n // realDeletedRecordIndexs.push(recordIndex);\n this.dataSourceObj.records[recordIndex] = records[index];\n }\n\n this.updateGroup();\n }\n}\n\nfunction dealWithGroup(record: any, children: any[], map: Map<number, any>, groupByKeys: string[], level: number) {\n const groupByKey = groupByKeys[level];\n if (!isValid(groupByKey)) {\n children.push(record);\n return;\n }\n const value = record[groupByKey];\n if (value !== undefined) {\n if (map.has(value)) {\n const index = map.get(value);\n // children[index].children.push(record);\n dealWithGroup(record, children[index].children, children[index].map, groupByKeys, level + 1);\n } else {\n map.set(value, children.length);\n children.push({\n vTableMerge: true,\n vtableMergeName: value,\n children: [] as any,\n map: new Map()\n });\n dealWithGroup(\n record,\n children[children.length - 1].children,\n children[children.length - 1].map,\n groupByKeys,\n level + 1\n );\n }\n }\n}\n\nfunction syncGroupCollapseState(\n oldSource: any,\n newSource: any,\n oldGroupMap?: Map<string, number>,\n newGroupMap?: Map<string, number>\n) {\n if (!oldGroupMap) {\n oldGroupMap = new Map();\n for (let i = 0; i < oldSource.length; i++) {\n const record = oldSource[i];\n if (record.vTableMerge) {\n oldGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n if (!newGroupMap) {\n newGroupMap = new Map();\n for (let i = 0; i < newSource.length; i++) {\n const record = newSource[i];\n if (record.vTableMerge) {\n newGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n for (let i = 0; i < oldSource.length; i++) {\n const oldRecord = oldSource[i];\n const newRecord = newSource[newGroupMap.get(oldRecord.vtableMergeName)];\n if (isValid(newRecord)) {\n newRecord.hierarchyState = oldSource[i].hierarchyState;\n }\n if (\n isArray(oldRecord.children) &&\n isArray(newRecord.children) &&\n oldRecord.map.size !== 0 &&\n newRecord.map.size !== 0\n ) {\n syncGroupCollapseState(oldRecord.children, newRecord.children, oldRecord.map, newRecord.map);\n }\n }\n}\n"]}
@@ -710,5 +710,4 @@ function arraySortByAnotherArray(array, sortArray) {
710
710
  }));
711
711
  }
712
712
 
713
- //# sourceMappingURL=dataset.js.map
714
713
  exports.Dataset = Dataset;
@@ -298,5 +298,6 @@ function _getDependAggregatorValues(aggregators, dependIndicatorKeys) {
298
298
  return dependAggregatorValues;
299
299
  }
300
300
 
301
+ //# sourceMappingURL=statistics-helper.js.map
301
302
  exports.MinAggregator = MinAggregator, exports.indicatorSort = indicatorSort, exports.typeSort = typeSort,
302
303
  exports.naturalSort = naturalSort, exports.sortBy = sortBy;
@@ -9,7 +9,7 @@ export declare class EditManeger {
9
9
  };
10
10
  constructor(table: BaseTableAPI);
11
11
  bindEvent(): void;
12
- startEditCell(col: number, row: number): void;
12
+ startEditCell(col: number, row: number, value?: string | number): void;
13
13
  completeEdit(e?: Event): boolean | Promise<boolean>;
14
14
  private doExit;
15
15
  cancelEdit(): void;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.EditManeger = void 0;
6
6
 
7
- const TABLE_EVENT_TYPE_1 = require("../core/TABLE_EVENT_TYPE"), util_1 = require("../event/util"), helper_1 = require("../tools/helper");
7
+ const TABLE_EVENT_TYPE_1 = require("../core/TABLE_EVENT_TYPE"), util_1 = require("../event/util"), helper_1 = require("../tools/helper"), vutils_1 = require("@visactor/vutils");
8
8
 
9
9
  class EditManeger {
10
10
  constructor(table) {
@@ -30,7 +30,7 @@ class EditManeger {
30
30
  (this.table.autoFillWidth || this.table.autoFillHeight) && this.completeEdit();
31
31
  }));
32
32
  }
33
- startEditCell(col, row) {
33
+ startEditCell(col, row, value) {
34
34
  var _a, _b, _c, _d, _e;
35
35
  const editor = this.table.getEditor(col, row);
36
36
  if (editor) {
@@ -39,7 +39,7 @@ class EditManeger {
39
39
  col: col,
40
40
  row: row
41
41
  }), this.editingEditor = editor;
42
- const dataValue = this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
42
+ const dataValue = (0, vutils_1.isValid)(value) ? value : this.table.getCellOriginValue(col, row), rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row)), referencePosition = {
43
43
  rect: {
44
44
  left: rect.left,
45
45
  top: rect.top,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\n\nexport class EditManeger {\n table: BaseTableAPI;\n editingEditor: IEditor;\n editCell: { col: number; row: number };\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\n const handler = this.table.internalProps.handler;\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (\n !(this.table.options as ListTableConstructorOptions).editCellTrigger || //默认为双击\n (this.table.options as ListTableConstructorOptions).editCellTrigger === 'doubleclick'\n ) {\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n this.startEditCell(col, row);\n }\n });\n\n this.table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n if ((this.table.options as ListTableConstructorOptions).editCellTrigger === 'click') {\n const { col, row } = e;\n this.startEditCell(col, row);\n }\n });\n\n handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n this.completeEdit();\n });\n handler.on(this.table.getElement(), 'resize', (e: Event) => {\n if (this.table.autoFillWidth || this.table.autoFillHeight) {\n this.completeEdit();\n }\n });\n }\n\n startEditCell(col: number, row: number) {\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n this.editingEditor = editor;\n const dataValue = this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n const maybePromiseOrValue = this.editingEditor.validateValue?.();\n if (isPromise(maybePromiseOrValue)) {\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n if (result) {\n this.doExit();\n resolve(true);\n } else {\n resolve(false);\n }\n })\n .catch((err: Error) => {\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n } else if (maybePromiseOrValue) {\n this.doExit();\n return true;\n }\n return false;\n }\n this.doExit();\n return true;\n }\n\n private doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAG5D,wCAAoD;AAEpD,4CAA4C;AAC5C,6CAA2C;AAE3C,MAAa,WAAW;IAKtB,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,mCAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;;YAChD,IACE,CAAE,IAAI,CAAC,KAAK,CAAC,OAAuC,CAAC,eAAe;gBACnE,IAAI,CAAC,KAAK,CAAC,OAAuC,CAAC,eAAe,KAAK,aAAa,EACrF;gBACA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAGvB,MAAM,YAAY,GAAG,IAAA,0BAAmB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CACpD,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,YAAY,CAAC,WAAW,CAAC,CAAC,EAC1B,MAAA,YAAY,CAAC,SAAS,0CAAE,UAAU,CACnC,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE;oBAGnF,OAAO;iBACR;gBACD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,mCAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;YAC7C,IAAK,IAAI,CAAC,KAAK,CAAC,OAAuC,CAAC,eAAe,KAAK,OAAO,EAAE;gBACnF,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAQ,EAAE,EAAE;YACzD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBACzD,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,KAAuB;;QAC7D,MAAM,MAAM,GAAI,IAAI,CAAC,KAAsB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YAcV,IAAI,MAAA,MAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAmC,0CAAE,aAAa,mDAAG,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC5F,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACxE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aAC9B;YACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACpF,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAE/G,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAChH,MAAA,MAAM,CAAC,YAAY,uDAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,mBAAmB,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;aACjG;YACD,MAAA,MAAM,CAAC,mBAAmB,uDAAG,GAAG,EAAE;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAA,MAAM,CAAC,OAAO,uDAAG;gBACf,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,CAAC;gBACD,iBAAiB;gBACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBAClC,GAAG;gBACH,GAAG;aACJ,CAAC,CAAC;SACJ;IACH,CAAC;IAID,YAAY,CAAC,CAAS;;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAiC,CAAC;QACpD,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEvC,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;gBAErG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;oBACnC,OAAO,KAAK,CAAC;iBACd;aACF;iBAAM,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBACpE,OAAO,KAAK,CAAC;aACd;SACF;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;YACpC,MAAM,mBAAmB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,aAAa,kDAAI,CAAC;YACjE,IAAI,IAAA,kBAAS,EAAC,mBAAmB,CAAC,EAAE;gBAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,mBAAmB;yBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;wBACb,IAAI,MAAM,EAAE;4BACV,IAAI,CAAC,MAAM,EAAE,CAAC;4BACd,OAAO,CAAC,IAAI,CAAC,CAAC;yBACf;6BAAM;4BACL,OAAO,CAAC,KAAK,CAAC,CAAC;yBAChB;oBACH,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;wBACpC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,mBAAmB,EAAE;gBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM;;QACZ,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,QAAQ,kDAAI,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAU,EAAE,CAAC;QAChC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3D,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC3D,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACrC;YACD,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACtC;QACA,IAAI,CAAC,KAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC1G,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,IAAI,kDAAI,CAAC;QAC5B,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,KAAK,kDAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,UAAU;;QACR,IAAI,IAAI,CAAC,aAAa,EAAE;YAEtB,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,IAAI,kDAAI,CAAC;YAC5B,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,KAAK,kDAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;IACH,CAAC;CACF;AAtLD,kCAsLC","file":"edit-manager.js","sourcesContent":["import type { IEditor } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\nimport { isPromise } from '../tools/helper';\nimport { isValid } from '@visactor/vutils';\n\nexport class EditManeger {\n table: BaseTableAPI;\n editingEditor: IEditor;\n editCell: { col: number; row: number };\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\n const handler = this.table.internalProps.handler;\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (\n !(this.table.options as ListTableConstructorOptions).editCellTrigger || //默认为双击\n (this.table.options as ListTableConstructorOptions).editCellTrigger === 'doubleclick'\n ) {\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n this.startEditCell(col, row);\n }\n });\n\n this.table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n if ((this.table.options as ListTableConstructorOptions).editCellTrigger === 'click') {\n const { col, row } = e;\n this.startEditCell(col, row);\n }\n });\n\n handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n this.completeEdit();\n });\n handler.on(this.table.getElement(), 'resize', (e: Event) => {\n if (this.table.autoFillWidth || this.table.autoFillHeight) {\n this.completeEdit();\n }\n });\n }\n\n startEditCell(col: number, row: number, value?: string | number) {\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n // //自定义内容单元格不允许编辑\n // if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n // console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n // return;\n // }\n // if (!this.table.isHeader(col, row)) {\n // const range = this.table.getCellRange(col, row);\n // const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // if (isMerge) {\n // console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n // return;\n // }\n // }\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n\n if (!this.editingEditor) {\n this.editCell = { col, row };\n }\n this.editingEditor = editor;\n const dataValue = isValid(value) ? value : this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement(),\n col,\n row\n });\n }\n }\n\n /** 如果是鼠标事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑\n * 返回值如果为false说明没有退出编辑状态 validateValue接口返回false 说明校验失败不退出编辑 */\n completeEdit(e?: Event): boolean | Promise<boolean> {\n if (!this.editingEditor) {\n return true;\n }\n\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return false;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return false;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n if (this.editingEditor.validateValue) {\n const maybePromiseOrValue = this.editingEditor.validateValue?.();\n if (isPromise(maybePromiseOrValue)) {\n return new Promise((resolve, reject) => {\n maybePromiseOrValue\n .then(result => {\n if (result) {\n this.doExit();\n resolve(true);\n } else {\n resolve(false);\n }\n })\n .catch((err: Error) => {\n console.error('VTable Error:', err);\n reject(err);\n });\n });\n } else if (maybePromiseOrValue) {\n this.doExit();\n return true;\n }\n return false;\n }\n this.doExit();\n return true;\n }\n\n private doExit() {\n const changedValue = this.editingEditor.getValue?.();\n const range = this.table.getCellRange(this.editCell.col, this.editCell.row);\n const changedValues: any[] = [];\n for (let row = range.start.row; row <= range.end.row; row++) {\n const rowChangedValues = [];\n for (let col = range.start.col; col <= range.end.col; col++) {\n rowChangedValues.push(changedValue);\n }\n changedValues.push(rowChangedValues);\n }\n (this.table as ListTableAPI).changeCellValues(range.start.col, range.start.row, changedValues);\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n }\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.bindContainerDomListener = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), ts_types_1 = require("../../ts-types"), TABLE_EVENT_TYPE_1 = require("../../core/TABLE_EVENT_TYPE"), scroll_1 = require("../scroll"), helper_1 = require("../../tools/helper"), pixel_ratio_1 = require("../../tools/pixel-ratio"), table_group_1 = require("./table-group");
7
+ const vutils_1 = require("@visactor/vutils"), ts_types_1 = require("../../ts-types"), TABLE_EVENT_TYPE_1 = require("../../core/TABLE_EVENT_TYPE"), scroll_1 = require("../scroll"), helper_1 = require("../../tools/helper"), pixel_ratio_1 = require("../../tools/pixel-ratio"), table_group_1 = require("./table-group"), is_cell_select_highlight_1 = require("../../state/select/is-cell-select-highlight");
8
8
 
9
9
  function bindContainerDomListener(eventManager) {
10
10
  const table = eventManager.table, stateManager = table.stateManager, handler = table.internalProps.handler;
@@ -30,7 +30,7 @@ function bindContainerDomListener(eventManager) {
30
30
  eventManager.deelTableSelectAll()); else if (stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0 && ("ArrowUp" === e.key || "ArrowDown" === e.key || "ArrowLeft" === e.key || "ArrowRight" === e.key)) {
31
31
  if ((null === (_c = null === (_b = table.options.keyboardOptions) || void 0 === _b ? void 0 : _b.moveEditCellOnArrowKeys) || void 0 === _c || !_c) && (null === (_d = table.editorManager) || void 0 === _d ? void 0 : _d.editingEditor)) return;
32
32
  let targetCol, targetRow;
33
- e.preventDefault(), e.stopPropagation(), "ArrowUp" === e.key ? e.ctrlKey || e.metaKey ? (targetCol = stateManager.select.cellPos.col,
33
+ if (e.preventDefault(), e.stopPropagation(), "ArrowUp" === e.key ? e.ctrlKey || e.metaKey ? (targetCol = stateManager.select.cellPos.col,
34
34
  targetRow = 0) : (e.shiftKey, targetCol = stateManager.select.cellPos.col, targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1))) : "ArrowDown" === e.key ? e.ctrlKey || e.metaKey ? (targetCol = stateManager.select.cellPos.col,
35
35
  targetRow = table.rowCount - 1) : (e.shiftKey, targetCol = stateManager.select.cellPos.col,
36
36
  targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1))) : "ArrowLeft" === e.key ? e.ctrlKey || e.metaKey ? (targetCol = 0,
@@ -38,6 +38,7 @@ function bindContainerDomListener(eventManager) {
38
38
  targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1))) : "ArrowRight" === e.key && (e.ctrlKey || e.metaKey ? (targetCol = table.colCount - 1,
39
39
  targetRow = stateManager.select.cellPos.row) : (e.shiftKey, targetRow = stateManager.select.cellPos.row,
40
40
  targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1)))),
41
+ (0, is_cell_select_highlight_1.isCellDisableSelect)(table, targetCol, targetRow)) return;
41
42
  table.selectCell(targetCol, targetRow, e.shiftKey), null !== (_f = null === (_e = table.options.keyboardOptions) || void 0 === _e ? void 0 : _e.moveEditCellOnArrowKeys) && void 0 !== _f && _f && (null === (_g = table.editorManager) || void 0 === _g ? void 0 : _g.editingEditor) && (table.editorManager.completeEdit(),
42
43
  table.getElement().focus(), table.getEditor(targetCol, targetRow) && table.editorManager.startEditCell(targetCol, targetRow));
43
44
  } else if ("Escape" === e.key) table.editorManager.cancelEdit(); else if ("Enter" === e.key) {
@@ -50,11 +51,11 @@ function bindContainerDomListener(eventManager) {
50
51
  } else if ("Tab" === e.key && (null === (_o = null === (_m = table.options.keyboardOptions) || void 0 === _m ? void 0 : _m.moveFocusCellOnTab) || void 0 === _o || _o) && (e.preventDefault(),
51
52
  stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0)) {
52
53
  let targetCol, targetRow;
53
- stateManager.select.cellPos.col === table.colCount - 1 ? (targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1),
54
+ if (stateManager.select.cellPos.col === table.colCount - 1 ? (targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1),
54
55
  targetCol = table.rowHeaderLevelCount) : stateManager.select.cellPos.row === table.rowCount - 1 ? (targetRow = table.rowCount - 1,
55
56
  targetCol = table.rowHeaderLevelCount) : (targetRow = stateManager.select.cellPos.row,
56
- targetCol = stateManager.select.cellPos.col + 1), table.selectCell(targetCol, targetRow),
57
- (null === (_p = table.editorManager) || void 0 === _p ? void 0 : _p.editingEditor) && (table.editorManager.completeEdit(),
57
+ targetCol = stateManager.select.cellPos.col + 1), (0, is_cell_select_highlight_1.isCellDisableSelect)(table, targetCol, targetRow)) return;
58
+ table.selectCell(targetCol, targetRow), (null === (_p = table.editorManager) || void 0 === _p ? void 0 : _p.editingEditor) && (table.editorManager.completeEdit(),
58
59
  table.getElement().focus(), table.getEditor(targetCol, targetRow) && table.editorManager.startEditCell(targetCol, targetRow));
59
60
  }
60
61
  handleKeydownListener(e);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/listener/container-dom.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAE3C,6CAAwF;AACxF,kEAA+D;AAC/D,sCAAwC;AACxC,+CAA6C;AAE7C,yDAAwD;AACxD,+CAA2D;AAE3D,SAAgB,wBAAwB,CAAC,YAA0B;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,OAAO,GAAiB,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;IAQ1D,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE;QACvD,YAAY,CAAC,cAAc,EAAE,CAAC;IAEhC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;QACxD,IAAI,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE;YACzC,IAAA,oBAAW,EAAC,CAAC,EAAE,YAAY,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;IAGH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;;QAC7D,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;YAC7C,IAAI,MAAA,KAAK,CAAC,eAAe,0CAAE,gBAAgB,EAAE;gBAE3C,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,YAAY,CAAC,kBAAkB,EAAE,CAAC;aACnC;SACF;aAAM,IACL,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACpC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACpC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,EACjG;YACA,IACE,CAAC,CAAC,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,eAAe,0CAAE,uBAAuB,mCAAI,KAAK,CAAC;iBAClE,MAAC,KAAsB,CAAC,aAAa,0CAAE,aAAa,CAAA,EACpD;gBAEA,OAAO;aACR;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;YAGnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC;YACd,IAAI,SAAS,CAAC;YAGd,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;gBACvB,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBAC1B,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,CAAC,CAAC;iBACf;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACrB,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;qBAAM;oBACL,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;aACF;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;gBAEhC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBAC1B,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;iBAChC;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACrB,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;qBAAM;oBACL,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;aACF;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE;gBAEhC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBAC1B,SAAS,GAAG,CAAC,CAAC;oBACd,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBAC7C;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACrB,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;qBAAM;oBACL,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;aACF;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,EAAE;gBAEjC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBAC1B,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;oBAC/B,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBAC7C;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACrB,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;qBAAM;oBACL,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC5C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5F;aACF;YACD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACnD,IACE,CAAC,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,eAAe,0CAAE,uBAAuB,mCAAI,KAAK,CAAC;iBACjE,MAAC,KAAsB,CAAC,aAAa,0CAAE,aAAa,CAAA,EACpD;gBAEC,KAAsB,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;gBACrD,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAK,KAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;oBAC1D,KAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBAC3E;aACF;SACF;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC5B,KAAsB,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;SACpD;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YAE5B,IAAK,KAAsB,CAAC,aAAa,CAAC,aAAa,EAAE;gBAEvD,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBACxB,KAAsB,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;gBACrD,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;gBAE3B,OAAO;aACR;YACD,IACE,CAAC,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,eAAe,0CAAE,eAAe,mCAAI,IAAI,CAAC;gBACxD,CAAC,MAAA,MAAA,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,KAAK,CAAC,EACrD;gBAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC3D,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;oBAC9C,IAAK,KAAsB,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;wBACxD,KAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;qBACzE;iBACF;aACF;SACF;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YAC1B,IAAI,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,eAAe,0CAAE,kBAAkB,mCAAI,IAAI,EAAE;gBAC7D,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE;oBAChF,IAAI,SAAS,CAAC;oBACd,IAAI,SAAS,CAAC;oBACd,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;wBAC1D,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;wBAC9E,SAAS,GAAG,KAAK,CAAC,mBAAmB,CAAC;qBACvC;yBAAM,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;wBACjE,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;wBAC/B,SAAS,GAAG,KAAK,CAAC,mBAAmB,CAAC;qBACvC;yBAAM;wBACL,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;wBAC5C,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;qBACjD;oBACD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBACvC,IAAI,MAAC,KAAsB,CAAC,aAAa,0CAAE,aAAa,EAAE;wBACvD,KAAsB,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;wBACrD,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;wBAC3B,IAAK,KAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;4BAC1D,KAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;yBAC3E;qBACF;iBACF;aACF;SACF;QAED,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAKH,SAAS,qBAAqB,CAAC,CAAgB;;QAC7C,IAAK,KAAa,CAAC,YAAY,CAAC,mCAAgB,CAAC,OAAO,CAAC,EAAE;YACzD,MAAM,UAAU,GAAiB;gBAC/B,OAAO,EAAE,MAAA,CAAC,CAAC,OAAO,mCAAI,CAAC,CAAC,KAAK;gBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC;gBAER,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW;aAClF,CAAC;YACF,KAAK,CAAC,aAAa,CAAC,mCAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;SAC3D;IACH,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAgB,EAAE,EAAE;;QAC1D,IAAI,MAAA,KAAK,CAAC,eAAe,0CAAE,YAAY,EAAE;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE;gBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,MAAA,SAAS,CAAC,SAAS,0CAAE,KAAK,EAAE;oBAE9B,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;wBACrC,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC3B,MAAM,SAAS,GAAG;4BAChB,0CAA0C;4BAG1C,uFAAuF;yBACxF,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAChC,IAAI,CAAC,OAAO,CAAC,UAAU,QAAa,EAAE,QAAgB;4BACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACnC,MAAM,SAAS,GAAa,EAAE,CAAC;4BAC/B,IAAI,QAAQ,KAAK,CAAC,EAAE;gCAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;6BACxB;4BACD,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY,EAAE,SAAiB;gCAErD,MAAM,cAAc,GAAG,CAAC,IAAI;oCAC1B,CAAC,CAAC,GAAG;oCACL,CAAC,CAAC,IAAI;yCACD,QAAQ,EAAE;yCACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;yCACtB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;yCACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;yCACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;yCACrB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;yCACtB,OAAO,CAAC,mCAAmC,EAAE,UAAU,CAAC;yCACxD,OAAO,CAAC,YAAY,EAAE,CAAC,SAAyB,EAAE,EAAE;wCAEnD,OAAO,mCAAmC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC;oCAC5F,CAAC,CAAC;yCACD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gCAE/B,SAAS,CAAC,IAAI,CAAC,OAAO,cAAc,OAAO,CAAC,CAAC;4BAC/C,CAAC,CAAC,CAAC;4BACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;4BAE3C,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gCAChC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;6BACzB;wBACH,CAAC,CAAC,CAAC;wBACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACxB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC,CAAC;oBACF,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;oBACrC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;wBACxB,IAAI,aAAa,CAAC;4BAChB,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;4BACxD,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;yBACvD,CAAC;qBACH,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAI,gBAAO,CAAC,EAAE,EAAE;wBACb,MAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBACrD;yBAAM;wBACJ,CAAS,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;qBACtD;iBACF;gBACD,KAAK,CAAC,aAAa,CAAC,mCAAgB,CAAC,SAAS,EAAE;oBAC9C,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;oBAC3C,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;aACJ;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;;QACjD,IAAI,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,gBAAgB,KAAK,KAAsB,CAAC,gBAAgB,EAAE;YACvF,IAAI,MAAC,KAAsB,CAAC,aAAa,0CAAE,aAAa,EAAE;gBACxD,OAAO;aACR;YACD,IAAI,CAAA,MAAA,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAChD,IAAI,MAAA,SAAS,CAAC,SAAS,0CAAE,IAAI,EAAE;oBAE7B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;wBAC/C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;4BAEjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gCACpC,gBAAgB,CAAC,IAAI,CAAC,CAAC;6BACxB;iCAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;gCACpE,gBAAgB,CAAC,IAAI,CAAC,CAAC;6BACxB;iCAAM;6BAEN;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;oBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAE7D,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC;oBAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACjD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,MAAM,MAAM,GAA0B,EAAE,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,UAAU,QAAa,EAAE,QAAgB;wBACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnC,MAAM,SAAS,GAAwB,EAAE,CAAC;wBAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY,EAAE,SAAiB;4BAErD,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gCAClC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;6BACpB;4BACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBACF,KAAsB,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;iBAC5D;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC,CAAM,EAAE,EAAE;;QACvD,IAAI,CAAA,MAAA,KAAK,CAAC,YAAY,0CAAE,yBAAyB,MAAK,KAAK,EAAE;YAC3D,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE;QAC7C,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAEnC,OAAO;SACR;QACD,IAAI,CAAC,IAAA,gBAAO,EAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtC,KAAK,CAAC,aAAa,CAAC,IAAA,2BAAa,GAAE,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE;YAC1B,KAAK,CAAC,MAAM,EAAE,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;IAGH,MAAM,KAAK,GAAG,4BAA4B,CAAC;IAE3C,MAAM,SAAS,GAAG,4BAA4B,CAAC;IAE/C,SAAS,gBAAgB,CAAC,IAAmB;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE;;gBAEnC,IAAI,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAEvD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;wBAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC5B,MAAM,WAAW,GAAuB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;wBACnF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;4BAC5C,OAAO,CACL,SAAS,CAAC,CAAC,CAAC;iCACT,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;iCAClC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;iCAIvC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;iCACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iCACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iCACrB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;iCACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAC3B,CAAC;wBAEJ,CAAC,CAAC,CAAC;wBACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvB,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;qBAC7E;oBACD,mBAAmB,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;oBACzC,MAAM,GAAG,iBAAiB,CACxB,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,GAAG,GAAG,GAAG,CAAC,EAChB,MAAM,GAAG,GAAG,GAAG,CAAC,CACjB,CAAC;oBACD,KAAsB,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBAClE;qBAAM;oBACL,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;wBAC/C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;4BACjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gCACrC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAU,EAAE,EAAE;oCAC7C,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAChC,CAAC,CAAC,CAAC;6BACJ;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,WAAW,CAAC,UAAkB;;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,QAAa,EAAE,QAAgB;;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,SAAS,GAAwB,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY,EAAE,SAAiB;gBAErD,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;iBACpB;gBACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,mBAAmB,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;QACzC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QAChH,KAAsB,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,SAAS,gBAAgB,CAAC,IAAmB;QAE3C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxG,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE;;gBACnC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnE,IAAI,MAAM,GAA0B,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACnD,IAAI,CAAC,GAAG,EAAE,CAAC;iBACZ;gBACD,IAAI,CAAC,OAAO,CAAC,UAAU,QAAa,EAAE,QAAgB;;oBACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAwB,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACvB,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY,EAAE,SAAiB;wBACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;4BACvB,IAAI,GAAG,IAAI;iCACR,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;iCACzB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;yBAC1F;wBACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;oBACH,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBACH,mBAAmB,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;gBACzC,MAAM,GAAG,iBAAiB,CACxB,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,GAAG,GAAG,GAAG,CAAC,EAChB,MAAM,GAAG,GAAG,GAAG,CAAC,CACjB,CAAC;gBACD,KAAsB,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,SAAS,iBAAiB,CACxB,MAA6B,EAC7B,QAAgB,EAChB,QAAgB,EAChB,gBAAwB,EACxB,gBAAwB;QAExB,IAAI,gBAAgB,GAAG,QAAQ,IAAI,gBAAgB,GAAG,QAAQ,EAAE;YAC9D,IAAI,gBAAgB,GAAG,QAAQ,KAAK,CAAC,IAAI,gBAAgB,GAAG,QAAQ,KAAK,CAAC,EAAE;gBAC1E,MAAM,aAAa,GAA0B,EAAE,CAAC;gBAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,aAAa,GAAwB,EAAE,CAAC;oBAC9C,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;wBACzC,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;wBAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;wBAC/B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;qBAClD;iBACF;gBACD,OAAO,aAAa,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,yBAAyB,GAAG,CAAC,CAAa,EAAE,EAAE;QAElD,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,MAAM;QACX,QAAQ,EAAE,yBAAyB;KACpC,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;IAEzE,MAAM,uBAAuB,GAAG,CAAC,CAAa,EAAE,EAAE;QAChD,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE5C,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,KAAK,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;YAC9B,IAAA,0BAAY,EAAC,KAAK,CAAC,CAAC;SACrB;aAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;YACrC,IAAA,0BAAY,EAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC,CAAC;IACF,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,uBAAuB;KAClC,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAEhE,MAAM,yBAAyB,GAAG,CAAC,CAAa,EAAE,EAAE;;QAClD,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE;YACrE,MAAM,KAAK,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,0CAAE,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,0CAAE,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC1D,KAAK,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;aACrC;SACF;QAQD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAIxD,IAAI,YAAY,CAAC,gBAAgB,KAAK,2BAAgB,CAAC,OAAO,EAAE;YAC9D,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;gBAC9B,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpC,IAAK,KAAa,CAAC,YAAY,CAAC,mCAAgB,CAAC,aAAa,CAAC,EAAE;oBAC/D,KAAK,CAAC,aAAa,CAAC,mCAAgB,CAAC,aAAa,EAAE;wBAClD,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG;wBACxC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;qBACjE,CAAC,CAAC;iBACJ;aACF;iBAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;gBACrC,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAK,KAAa,CAAC,YAAY,CAAC,mCAAgB,CAAC,UAAU,CAAC,EAAE;oBAC5D,KAAK,CAAC,aAAa,CAAC,mCAAgB,CAAC,UAAU,EAAE;wBAC/C,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG;wBACrC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;qBAChE,CAAC,CAAC;iBACJ;aACF;SACF;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAErD,IACE,YAAY,CAAC,kBAAkB;YAC/B,YAAY,CAAC,SAAS;YACtB,WAAW;YACX,CAAA,MAAA,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,0CAAE,MAAM,IAAG,CAAC,EAC5C;YAEA,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAQvC,MAAM,kBAAkB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACvD,MAAM,qBAAqB,GAAG,KAAK,CAAC,yBAAyB,EAAE,CAAC;YAChE,MAAM,mBAAmB,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACvD,MAAM,oBAAoB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACtG,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClG,MAAM,UAAU,GACd,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;gBACxF,KAAK,CAAC,gBAAgB,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC;YACtD,MAAM,UAAU,GACd,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;gBAC9F,KAAK,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACpD,IACE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,qBAAqB,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,kBAAkB,CAAC,IAAI,UAAU,CAAC;gBACxG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,oBAAoB,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,UAAU,CAAC,EACxG;gBACA,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;gBACpC,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;gBACpC,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,GAAG,GAAG,KAAK,CAAC;gBAChB,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IACE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,qBAAqB;oBAC5C,UAAU;oBACV,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,EAAE,EACpE;oBACA,MAAM,GAAG,IAAI,CAAC;oBACd,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC;iBACxF;qBAAM,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,kBAAkB,IAAI,UAAU,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE;oBACtF,GAAG,GAAG,IAAI,CAAC;oBACX,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC;iBAClF;gBAED,IACE,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,oBAAoB;oBAC1C,UAAU;oBACV,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,EAAE,EACpE;oBACA,KAAK,GAAG,IAAI,CAAC;oBACb,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC;iBACtF;qBAAM,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,mBAAmB,IAAI,UAAU,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE;oBACzF,IAAI,GAAG,IAAI,CAAC;oBACZ,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC;iBACpF;gBACD,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAC3C,KAAK,CAAC,YAAY,CAAC,YAAY,EAC/B,KAAK,CAAC,YAAY,CAAC,YAAY,EAC/B,CAAC,CACF,CAAC;gBACF,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,EAAU,EAAE,EAAU,EAAE,EAAE;oBAC1E,IAAA,oBAAW,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAS,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAE5E,IAAI,OAAe,CAAC;oBACpB,IAAI,OAAe,CAAC;oBAEpB,IAAI,MAAM,EAAE;wBACV,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,qBAAqB,GAAG,EAAE,CAAC;qBAC3E;yBAAM,IAAI,GAAG,EAAE;wBACd,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,kBAAkB,GAAG,EAAE,CAAC;qBACrD;oBAED,IAAI,KAAK,EAAE;wBACT,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,GAAG,oBAAoB,GAAG,EAAE,CAAC;qBAC1E;yBAAM,IAAI,IAAI,EAAE;wBACf,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,mBAAmB,GAAG,EAAE,CAAC;qBACvD;oBAED,IAAI,eAAe,GAAG,KAAK,CAAC;oBAC5B,IAAI,eAAe,GAAG,KAAK,CAAC;oBAC5B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE;wBACnB,IACE,CAAC,CAAC,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;4BAC9F,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,EACzC;4BACA,OAAO,GAAG,CAAC,CAAC;4BACZ,eAAe,GAAG,IAAI,CAAC;yBACxB;6BAAM;4BACL,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;yBAChC;qBACF;oBACD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;wBACnB,IACE,CAAC,CAAC,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC;4BAClG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAC1C;4BACA,OAAO,GAAG,CAAC,CAAC;4BACZ,eAAe,GAAG,IAAI,CAAC;yBACxB;6BAAM;4BACL,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;yBAC/B;qBACF;oBACD,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC,2BAAgB,CAAC,OAAO,CAAC,CAAC;oBACpE,MAAM,SAAS,GAAG,KAAK,CAAC,iCAAiC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;oBACpF,MAAM,SAAS,GAAG,KAAK,CAAC,kCAAkC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;oBACrF,IAAI,IAAA,gBAAO,EAAC,SAAS,CAAC,IAAI,IAAA,gBAAO,EAAC,SAAS,CAAC,EAAE;wBAC5C,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC7F;gBACH,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE;gBAChE,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aAC/C;iBAAM;gBACL,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;aACrC;SACF;IACH,CAAC,CAAC;IACF,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,MAAM;QACX,QAAQ,EAAE,yBAAyB;KACpC,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;AAC3E,CAAC;AA/qBD,4DA+qBC","file":"container-dom.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { EventHandler } from '../EventHandler';\nimport { InteractionState, type KeydownEvent, type ListTableAPI } from '../../ts-types';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { handleWhell } from '../scroll';\nimport { browser } from '../../tools/helper';\nimport type { EventManager } from '../event';\nimport { getPixelRatio } from '../../tools/pixel-ratio';\nimport { endResizeCol, endResizeRow } from './table-group';\n\nexport function bindContainerDomListener(eventManager: EventManager) {\n const table = eventManager.table;\n const stateManager = table.stateManager;\n const handler: EventHandler = table.internalProps.handler;\n\n // handler.on(table.getElement(), 'mousedown', (e: MouseEvent) => {\n // if (table.eventManager.isPointerDownOnTable) {\n // e.stopPropagation();\n // }\n // });\n\n handler.on(table.getElement(), 'blur', (e: MouseEvent) => {\n eventManager.dealTableHover();\n // eventManager.dealTableSelect();\n });\n\n handler.on(table.getElement(), 'wheel', (e: WheelEvent) => {\n if (table.eventManager._enableTableScroll) {\n handleWhell(e, stateManager);\n }\n });\n\n // 监听键盘事件\n handler.on(table.getElement(), 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'a' && (e.ctrlKey || e.metaKey)) {\n if (table.keyboardOptions?.selectAllOnCtrlA) {\n // 处理全选\n e.preventDefault();\n //全选\n eventManager.deelTableSelectAll();\n }\n } else if (\n stateManager.select.cellPos.col >= 0 &&\n stateManager.select.cellPos.row >= 0 &&\n (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n if (\n !(table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor\n ) {\n // 编辑单元格状态下 如果没有开启方向键切换cell 则退出 。方向键可以在编辑input内移动光标\n return;\n }\n e.preventDefault();\n // 如果不加这句话 外部监听了键盘事件 会影响表格本身的移动格子功能,例如自定义日历编辑器的日期选择pickday.js\n //可能会引起其他问题 例如自定义实现了日历编辑器 里面切换日期左右键可能失效,这个时候建议监听VTable实例的事件keydown\n e.stopPropagation();\n let targetCol;\n let targetRow;\n\n // 处理向上箭头键\n if (e.key === 'ArrowUp') {\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = 0;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n }\n } else if (e.key === 'ArrowDown') {\n // 处理向下箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = table.rowCount - 1;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n }\n } else if (e.key === 'ArrowLeft') {\n // 处理向左箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = 0;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n }\n } else if (e.key === 'ArrowRight') {\n // 处理向右箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = table.colCount - 1;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n }\n }\n table.selectCell(targetCol, targetRow, e.shiftKey);\n if (\n (table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor\n ) {\n // 开启了方向键切换编辑单元格 并且当前已经在编辑状态下 切换到下一个需先退出再进入下个单元格的编辑\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager.startEditCell(targetCol, targetRow);\n }\n }\n } else if (e.key === 'Escape') {\n (table as ListTableAPI).editorManager.cancelEdit();\n } else if (e.key === 'Enter') {\n // 如果按enter键 可以结束当前的编辑 或开启编辑选中的单元格(仅限单选)\n if ((table as ListTableAPI).editorManager.editingEditor) {\n // 如果是结束当前编辑,且有主动监听keydown事件,则先触发keydown事件,之后再结束编辑\n handleKeydownListener(e);\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n // 直接返回,不再触发最后的keydown监听事件相关代码\n return;\n }\n if (\n (table.options.keyboardOptions?.editCellOnEnter ?? true) &&\n (table.stateManager.select.ranges?.length ?? 0) === 1\n ) {\n // 如果开启按enter键进入编辑的配置 且当前有选中的单元格 则进入编辑(仅限单选)\n const startCol = table.stateManager.select.ranges[0].start.col;\n const startRow = table.stateManager.select.ranges[0].start.row;\n const endCol = table.stateManager.select.ranges[0].end.col;\n const endRow = table.stateManager.select.ranges[0].end.row;\n if (startCol === endCol && startRow === endRow) {\n if ((table as ListTableAPI).getEditor(startCol, startRow)) {\n (table as ListTableAPI).editorManager.startEditCell(startCol, startRow);\n }\n }\n }\n } else if (e.key === 'Tab') {\n if (table.options.keyboardOptions?.moveFocusCellOnTab ?? true) {\n e.preventDefault();\n if (stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0) {\n let targetCol;\n let targetRow;\n if (stateManager.select.cellPos.col === table.colCount - 1) {\n targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1);\n targetCol = table.rowHeaderLevelCount;\n } else if (stateManager.select.cellPos.row === table.rowCount - 1) {\n targetRow = table.rowCount - 1;\n targetCol = table.rowHeaderLevelCount;\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = stateManager.select.cellPos.col + 1;\n }\n table.selectCell(targetCol, targetRow);\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager.startEditCell(targetCol, targetRow);\n }\n }\n }\n }\n }\n\n handleKeydownListener(e);\n });\n /**\n * 处理主动注册的keydown事件\n * @param e\n */\n function handleKeydownListener(e: KeyboardEvent) {\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {\n const cellsEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e,\n // cells: table.getSelectedCellInfos(),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);\n }\n }\n\n handler.on(table.getElement(), 'copy', (e: KeyboardEvent) => {\n if (table.keyboardOptions?.copySelected) {\n const data = table.getCopyValue();\n if (isValid(data)) {\n e.preventDefault();\n if (navigator.clipboard?.write) {\n // 将复制的数据转为html格式\n const setDataToHTML = (data: string) => {\n const result = ['<table>'];\n const META_HEAD = [\n '<meta name=\"author\" content=\"Visactor\"/>', // 后面可用于vtable之间的快速复制粘贴\n //white-space:normal,连续的空白字符会被合并为一个空格,并且文本会根据容器的宽度自动换行显示\n //mso-data-placement:same-cell,excel专用, 在同一个单元格中显示所有数据,而不是默认情况下将数据分散到多个单元格中显示\n '<style type=\"text/css\">td{white-space:normal}br{mso-data-placement:same-cell}</style>'\n ].join('');\n const rows = data.split('\\r\\n'); // 将数据拆分为行\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: string[] = [];\n if (rowIndex === 0) {\n result.push('<tbody>');\n }\n cells.forEach(function (cell: string, cellIndex: number) {\n // 单元格数据处理\n const parsedCellData = !cell\n ? ' '\n : cell\n .toString()\n .replace(/&/g, '&amp;') // replace & with &amp; to prevent XSS attacks\n .replace(/'/g, '&#39;') // replace ' with &#39; to prevent XSS attacks\n .replace(/</g, '&lt;') // replace < with &lt; to prevent XSS attacks\n .replace(/>/g, '&gt;') // replace > with &gt; to prevent XSS attacks\n .replace(/\\n/g, '<br>') // replace \\n with <br> to prevent XSS attacks\n .replace(/(<br(\\s*|\\/)>(\\r\\n|\\n)?|\\r\\n|\\n)/g, '<br>\\r\\n') // replace <br> with <br>\\r\\n to prevent XSS attacks\n .replace(/\\x20{2,}/gi, (substring: string | any[]) => {\n // excel连续空格序列化\n return `<span style=\"mso-spacerun: yes\">${'&nbsp;'.repeat(substring.length - 1)} </span>`;\n }) // replace 2 or more spaces with &nbsp; to prevent XSS attacks\n .replace(/\\t/gi, '&#9;'); // replace \\t with &#9; to prevent XSS attacks\n\n rowValues.push(`<td>${parsedCellData}</td>`);\n });\n result.push('<tr>', ...rowValues, '</tr>');\n\n if (rowIndex === rows.length - 1) {\n result.push('</tbody>');\n }\n });\n result.push('</table>');\n return [META_HEAD, result.join('')].join('');\n };\n const dataHTML = setDataToHTML(data);\n navigator.clipboard.write([\n new ClipboardItem({\n 'text/html': new Blob([dataHTML], { type: 'text/html' }),\n 'text/plain': new Blob([data], { type: 'text/plain' })\n })\n ]);\n } else {\n if (browser.IE) {\n (window as any).clipboardData.setData('Text', data); // IE\n } else {\n (e as any).clipboardData.setData('text/plain', data); // Chrome, Firefox\n }\n }\n table.fireListeners(TABLE_EVENT_TYPE.COPY_DATA, {\n cellRange: table.stateManager.select.ranges,\n copyData: data\n });\n }\n }\n });\n handler.on(table.getElement(), 'paste', (e: any) => {\n if (table.keyboardOptions?.pasteValueToCell && (table as ListTableAPI).changeCellValues) {\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n return;\n }\n if (table.stateManager.select.ranges?.length > 0) {\n if (navigator.clipboard?.read) {\n // 读取剪切板数据\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n // 优先处理 html 格式数据\n if (item.types.includes('text/html')) {\n pasteHtmlToTable(item);\n } else if (item.types.length === 1 && item.types[0] === 'text/plain') {\n pasteTextToTable(item);\n } else {\n // 其他情况\n }\n }\n });\n } else {\n const ranges = table.stateManager.select.ranges;\n const col = Math.min(ranges[0].start.col, ranges[0].end.col);\n const row = Math.min(ranges[0].start.row, ranges[0].end.row);\n\n const clipboardData = e.clipboardData || window.Clipboard;\n const pastedData = clipboardData.getData('text');\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n const values: (string | number)[][] = [];\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n // 去掉单元格数据末尾的 '\\r'\n if (cellIndex === cells.length - 1) {\n cell = cell.trim();\n }\n rowValues.push(cell);\n });\n });\n (table as ListTableAPI).changeCellValues(col, row, values);\n }\n }\n }\n });\n\n handler.on(table.getElement(), 'contextmenu', (e: any) => {\n if (table.eventOptions?.preventDefaultContextMenu !== false) {\n e.preventDefault();\n }\n });\n\n handler.on(table.getContainer(), 'resize', e => {\n if (e.width === 0 && e.height === 0) {\n // 临时绕行解决因为display设置为none产生的问题\n return;\n }\n if (!isValid(table.options.pixelRatio)) {\n table.setPixelRatio(getPixelRatio());\n }\n if (!e.windowSizeNotChange) {\n table.resize();\n }\n });\n\n // const regex = /<tr[^>]*>(.*?)<\\/tr>/gs; // 匹配<tr>标签及其内容\n const regex = /<tr[^>]*>([\\s\\S]*?)<\\/tr>/g; // for webpack3\n // const cellRegex = /<td[^>]*>(.*?)<\\/td>/gs; // 匹配<td>标签及其内容\n const cellRegex = /<td[^>]*>([\\s\\S]*?)<\\/td>/g; // for webpack3\n\n function pasteHtmlToTable(item: ClipboardItem) {\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n item.getType('text/html').then((blob: any) => {\n blob.text().then((pastedData: any) => {\n // 解析html数据\n if (pastedData && /(<table)|(<TABLE)/g.test(pastedData)) {\n // const matches = pastedData.matchAll(regex);\n const matches = Array.from(pastedData.matchAll(regex));\n for (const match of matches) {\n const rowContent = match[1]; // 获取<tr>标签中的内容\n const cellMatches: RegExpMatchArray[] = Array.from(rowContent.matchAll(cellRegex)); // 获取<td>标签中的内容\n const rowValues = cellMatches.map(cellMatch => {\n return (\n cellMatch[1]\n .replace(/(<(?!br)([^>]+)>)/gi, '') // 除了 <br> 标签以外的所有 HTML 标签都替换为空字符串\n .replace(/<br(\\s*|\\/)>[\\r\\n]?/gim, '\\n') // 将字符串中的 <br> 标签以及其后可能存在的空白字符和斜杠都替换为换行符 \\n\n // .replace(/<br>/g, '\\n') // 替换<br>标签为换行符\n // .replace(/<(?:.|\\n)*?>/gm, '') // 去除HTML标签\n //将字符串中的 HTML 实体字符转换为原始的字符\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&#9;/gi, '\\t')\n .replace(/&nbsp;/g, ' ')\n );\n // .trim(); // 去除首尾空格\n });\n values.push(rowValues);\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n }\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n } else {\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n if (item.types.includes('text/plain')) {\n item.getType('text/plain').then((blob: Blob) => {\n blob.text().then(_pasteValue);\n });\n }\n }\n });\n }\n });\n });\n }\n\n function _pasteValue(pastedData: string) {\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n // 去掉单元格数据末尾的 '\\r'\n if (cellIndex === cells.length - 1) {\n cell = cell.trim();\n }\n rowValues.push(cell);\n });\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(values, pasteValuesRowCount, pasteValuesColCount, maxRow - row + 1, maxCol - col + 1);\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n }\n function pasteTextToTable(item: ClipboardItem) {\n // 如果只有 'text/plain'\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n // const values: (string | number)[][] = [];\n item.getType('text/plain').then((blob: any) => {\n blob.text().then((pastedData: any) => {\n const rows = pastedData.replace(/\\r(?!\\n)/g, '\\r\\n').split('\\r\\n'); // 文本中的换行符格式进行统一处理\n let values: (string | number)[][] = [];\n if (rows.length > 1 && rows[rows.length - 1] === '') {\n rows.pop();\n }\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n if (cell.includes('\\n')) {\n cell = cell\n .replace(/^\"(.*)\"$/, '$1') // 将字符串开头和结尾的双引号去除,并保留双引号内的内容\n .replace(/[\"]*/g, match => new Array(Math.floor(match.length / 2)).fill('\"').join('')); // 连续出现的双引号替换为一半数量的双引号\n }\n rowValues.push(cell);\n });\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n });\n });\n }\n function handlePasteValues(\n values: (string | number)[][],\n rowCount: number,\n colCount: number,\n selectedRowCount: number,\n selectedColCount: number\n ) {\n if (selectedColCount > colCount || selectedRowCount > rowCount) {\n if (selectedColCount % colCount === 0 && selectedRowCount % rowCount === 0) {\n const toPasteValues: (string | number)[][] = [];\n // 在目标区域中循环遍历,将复制的值逐个粘贴到每个单元格中\n for (let i = 0; i < selectedRowCount; i++) {\n const rowPasteValue: (string | number)[] = [];\n toPasteValues.push(rowPasteValue);\n for (let j = 0; j < selectedColCount; j++) {\n const copiedRow = i % rowCount;\n const copiedCol = j % colCount;\n rowPasteValue.push(values[copiedRow][copiedCol]);\n }\n }\n return toPasteValues;\n }\n return values;\n }\n return values;\n }\n // 有被阻止冒泡的场景 就触发不到这里的事件了 所以这个LastBodyPointerXY变量的赋值在scrollbar的down事件也进行了处理\n const globalPointerdownCallback = (e: MouseEvent) => {\n // console.log('body pointerdown');\n table.eventManager.LastBodyPointerXY = { x: e.x, y: e.y };\n table.eventManager.isDown = true;\n };\n eventManager.globalEventListeners.push({\n name: 'pointerdown',\n env: 'body',\n callback: globalPointerdownCallback\n });\n document.body.addEventListener('pointerdown', globalPointerdownCallback);\n\n const globalPointerupCallback = (e: MouseEvent) => {\n table.eventManager.LastBodyPointerXY = null;\n // console.log('body pointerup', table.eventManager.isDown, table.eventManager.isDraging);\n table.eventManager.isDown = false;\n table.eventManager.isDraging = false;\n table.eventManager.inertiaScroll.endInertia();\n if (stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.isResizeRow()) {\n endResizeRow(table);\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointerup',\n env: 'document',\n callback: globalPointerupCallback\n });\n document.addEventListener('pointerup', globalPointerupCallback);\n\n const globalPointermoveCallback = (e: MouseEvent) => {\n if (table.eventManager.isDown && table.eventManager.LastBodyPointerXY) {\n const lastX = table.eventManager.LastBodyPointerXY?.x ?? e.x;\n const lastY = table.eventManager.LastBodyPointerXY?.y ?? e.y;\n if (Math.abs(lastX - e.x) > 1 || Math.abs(lastY - e.y) > 1) {\n table.eventManager.isDraging = true;\n }\n }\n // 注释掉。因为: 这里pointermove太敏感了 点击快的时候 可能动了1px这里也会执行到 就影响到下面选中不触发的问题。下面pointermove就有这段逻辑,这里先去掉\n // if (eventManager.touchSetTimeout) {\n // clearTimeout(eventManager.touchSetTimeout);\n // console.log('eventManager.touchSetTimeout', eventManager.touchSetTimeout);\n // eventManager.touchSetTimeout = undefined;\n // }\n // const eventArgsSet = getCellEventArgsSet(e);\n const { x, y } = table._getMouseAbstractPoint(e, false);\n // if (stateManager.interactionState === InteractionState.scrolling) {\n // return;\n // }\n if (stateManager.interactionState === InteractionState.grabing) {\n if (stateManager.isResizeCol()) {\n eventManager.dealColumnResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {\n col: table.stateManager.columnResize.col,\n colWidth: table.getColWidth(table.stateManager.columnResize.col)\n });\n }\n } else if (stateManager.isResizeRow()) {\n eventManager.dealRowResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_ROW)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_ROW, {\n row: table.stateManager.rowResize.row,\n rowHeight: table.getRowHeight(table.stateManager.rowResize.row)\n });\n }\n }\n }\n const isSelecting = table.stateManager.isSelecting();\n\n if (\n eventManager._enableTableScroll &&\n eventManager.isDraging &&\n isSelecting &&\n table.stateManager.select.ranges?.length > 0\n ) {\n // 检测鼠标是否离开了table\n const drawRange = table.getDrawRange();\n // const element = table.getElement();\n // const { x: rootLeft, y: rootTop, width: rootWidth } = element.getBoundingClientRect();\n // const tableLeft = drawRange.left + rootLeft;\n // const tableTop = drawRange.top + rootTop;\n // const tableRight = tableLeft + drawRange.width;\n // const tableBottom = tableTop + drawRange.height;\n // console.log('x, y', x, y);\n const topFrozenRowHeight = table.getFrozenRowsHeight();\n const bottomFrozenRowHeight = table.getBottomFrozenRowsHeight();\n const leftFrozenColsWidth = table.getFrozenColsWidth();\n const rightFrozenColsWidth = table.getRightFrozenColsWidth();\n const startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start;\n const endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end;\n const canScrollY =\n (table.isFrozenRow(startCell.row) === false || table.isFrozenRow(endCell.row) === false) &&\n table.getAllRowsHeight() > table.tableNoFrameHeight;\n const canScrollX =\n (table.isFrozenColumn(startCell.col) === false || table.isFrozenColumn(endCell.col) === false) &&\n table.getAllColsWidth() > table.tableNoFrameWidth;\n if (\n ((y > drawRange.bottom - bottomFrozenRowHeight || y < drawRange.top + topFrozenRowHeight) && canScrollY) ||\n ((x > drawRange.right - rightFrozenColsWidth || x < drawRange.left + leftFrozenColsWidth) && canScrollX)\n ) {\n table.eventManager.scrollXSpeed = 0;\n table.eventManager.scrollYSpeed = 0;\n let bottom = false;\n let top = false;\n let right = false;\n let left = false;\n if (\n y > drawRange.bottom - bottomFrozenRowHeight &&\n canScrollY &&\n table.scrollTop + table.tableNoFrameWidth < table.getAllRowsHeight()\n ) {\n bottom = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.bottom + bottomFrozenRowHeight) / 50;\n } else if (y < drawRange.top + topFrozenRowHeight && canScrollY && table.scrollTop > 0) {\n top = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.top - topFrozenRowHeight) / 50;\n }\n\n if (\n x > drawRange.right - rightFrozenColsWidth &&\n canScrollX &&\n table.scrollLeft + table.tableNoFrameWidth < table.getAllColsWidth()\n ) {\n right = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.right + rightFrozenColsWidth) / 50;\n } else if (x < drawRange.left + leftFrozenColsWidth && canScrollX && table.scrollLeft > 0) {\n left = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50;\n }\n table.eventManager.inertiaScroll.startInertia(\n table.eventManager.scrollXSpeed,\n table.eventManager.scrollYSpeed,\n 1\n );\n table.eventManager.inertiaScroll.setScrollHandle((dx: number, dy: number) => {\n handleWhell({ deltaX: -dx, deltaY: -dy } as any, table.stateManager, false);\n\n let selectX: number;\n let selectY: number;\n\n if (bottom) {\n selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20;\n } else if (top) {\n selectY = table.scrollTop + topFrozenRowHeight + 20;\n }\n\n if (right) {\n selectX = table.scrollLeft + drawRange.width - rightFrozenColsWidth - 20;\n } else if (left) {\n selectX = table.scrollLeft + leftFrozenColsWidth + 20;\n }\n\n let considerFrozenY = false;\n let considerFrozenX = false;\n if (!right && !left) {\n if (\n (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth) ||\n (x > 0 && x < table.getFrozenColsWidth())\n ) {\n selectX = x;\n considerFrozenX = true;\n } else {\n selectX = table.scrollLeft + x;\n }\n }\n if (!bottom && !top) {\n if (\n (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight) ||\n (y > 0 && y < table.getFrozenRowsHeight())\n ) {\n selectY = y;\n considerFrozenY = true;\n } else {\n selectY = table.scrollTop + y;\n }\n }\n table.stateManager.updateInteractionState(InteractionState.grabing);\n const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX);\n const targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);\n if (isValid(targetCol) && isValid(targetRow)) {\n table.stateManager.updateSelectPos(targetCol.col, targetRow.row, false, false, false, true);\n }\n });\n } else if (table.eventManager.inertiaScroll.isInertiaScrolling()) {\n table.eventManager.inertiaScroll.endInertia();\n } else {\n table.eventManager.scrollYSpeed = 0;\n }\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointermove',\n env: 'body',\n callback: globalPointermoveCallback\n });\n document.body.addEventListener('pointermove', globalPointermoveCallback);\n}\n"]}
1
+ {"version":3,"sources":["../src/event/listener/container-dom.ts"],"names":[],"mappings":"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","file":"container-dom.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { EventHandler } from '../EventHandler';\nimport { InteractionState, type KeydownEvent, type ListTableAPI } from '../../ts-types';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { handleWhell } from '../scroll';\nimport { browser } from '../../tools/helper';\nimport type { EventManager } from '../event';\nimport { getPixelRatio } from '../../tools/pixel-ratio';\nimport { endResizeCol, endResizeRow } from './table-group';\nimport { isCellDisableSelect } from '../../state/select/is-cell-select-highlight';\nexport function bindContainerDomListener(eventManager: EventManager) {\n const table = eventManager.table;\n const stateManager = table.stateManager;\n const handler: EventHandler = table.internalProps.handler;\n\n // handler.on(table.getElement(), 'mousedown', (e: MouseEvent) => {\n // if (table.eventManager.isPointerDownOnTable) {\n // e.stopPropagation();\n // }\n // });\n\n handler.on(table.getElement(), 'blur', (e: MouseEvent) => {\n eventManager.dealTableHover();\n // eventManager.dealTableSelect();\n });\n\n handler.on(table.getElement(), 'wheel', (e: WheelEvent) => {\n if (table.eventManager._enableTableScroll) {\n handleWhell(e, stateManager);\n }\n });\n\n // 监听键盘事件\n handler.on(table.getElement(), 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'a' && (e.ctrlKey || e.metaKey)) {\n if (table.keyboardOptions?.selectAllOnCtrlA) {\n // 处理全选\n e.preventDefault();\n //全选\n eventManager.deelTableSelectAll();\n }\n } else if (\n stateManager.select.cellPos.col >= 0 &&\n stateManager.select.cellPos.row >= 0 &&\n (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n if (\n !(table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor\n ) {\n // 编辑单元格状态下 如果没有开启方向键切换cell 则退出 。方向键可以在编辑input内移动光标\n return;\n }\n e.preventDefault();\n // 如果不加这句话 外部监听了键盘事件 会影响表格本身的移动格子功能,例如自定义日历编辑器的日期选择pickday.js\n //可能会引起其他问题 例如自定义实现了日历编辑器 里面切换日期左右键可能失效,这个时候建议监听VTable实例的事件keydown\n e.stopPropagation();\n let targetCol;\n let targetRow;\n\n // 处理向上箭头键\n if (e.key === 'ArrowUp') {\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = 0;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row - 1));\n }\n } else if (e.key === 'ArrowDown') {\n // 处理向下箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = table.rowCount - 1;\n } else if (e.shiftKey) {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n } else {\n targetCol = stateManager.select.cellPos.col;\n targetRow = Math.min(table.rowCount - 1, Math.max(0, stateManager.select.cellPos.row + 1));\n }\n } else if (e.key === 'ArrowLeft') {\n // 处理向左箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = 0;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col - 1));\n }\n } else if (e.key === 'ArrowRight') {\n // 处理向右箭头键\n if (e.ctrlKey || e.metaKey) {\n targetCol = table.colCount - 1;\n targetRow = stateManager.select.cellPos.row;\n } else if (e.shiftKey) {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = Math.min(table.colCount - 1, Math.max(0, stateManager.select.cellPos.col + 1));\n }\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n table.selectCell(targetCol, targetRow, e.shiftKey);\n if (\n (table.options.keyboardOptions?.moveEditCellOnArrowKeys ?? false) &&\n (table as ListTableAPI).editorManager?.editingEditor\n ) {\n // 开启了方向键切换编辑单元格 并且当前已经在编辑状态下 切换到下一个需先退出再进入下个单元格的编辑\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager.startEditCell(targetCol, targetRow);\n }\n }\n } else if (e.key === 'Escape') {\n (table as ListTableAPI).editorManager.cancelEdit();\n } else if (e.key === 'Enter') {\n // 如果按enter键 可以结束当前的编辑 或开启编辑选中的单元格(仅限单选)\n if ((table as ListTableAPI).editorManager.editingEditor) {\n // 如果是结束当前编辑,且有主动监听keydown事件,则先触发keydown事件,之后再结束编辑\n handleKeydownListener(e);\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n // 直接返回,不再触发最后的keydown监听事件相关代码\n return;\n }\n if (\n (table.options.keyboardOptions?.editCellOnEnter ?? true) &&\n (table.stateManager.select.ranges?.length ?? 0) === 1\n ) {\n // 如果开启按enter键进入编辑的配置 且当前有选中的单元格 则进入编辑(仅限单选)\n const startCol = table.stateManager.select.ranges[0].start.col;\n const startRow = table.stateManager.select.ranges[0].start.row;\n const endCol = table.stateManager.select.ranges[0].end.col;\n const endRow = table.stateManager.select.ranges[0].end.row;\n if (startCol === endCol && startRow === endRow) {\n if ((table as ListTableAPI).getEditor(startCol, startRow)) {\n (table as ListTableAPI).editorManager.startEditCell(startCol, startRow);\n }\n }\n }\n } else if (e.key === 'Tab') {\n if (table.options.keyboardOptions?.moveFocusCellOnTab ?? true) {\n e.preventDefault();\n if (stateManager.select.cellPos.col >= 0 && stateManager.select.cellPos.row >= 0) {\n let targetCol;\n let targetRow;\n if (stateManager.select.cellPos.col === table.colCount - 1) {\n targetRow = Math.min(table.rowCount - 1, stateManager.select.cellPos.row + 1);\n targetCol = table.rowHeaderLevelCount;\n } else if (stateManager.select.cellPos.row === table.rowCount - 1) {\n targetRow = table.rowCount - 1;\n targetCol = table.rowHeaderLevelCount;\n } else {\n targetRow = stateManager.select.cellPos.row;\n targetCol = stateManager.select.cellPos.col + 1;\n }\n // 如果是不支持选中的单元格 则退出\n if (isCellDisableSelect(table, targetCol, targetRow)) {\n return;\n }\n table.selectCell(targetCol, targetRow);\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n (table as ListTableAPI).editorManager.completeEdit();\n table.getElement().focus();\n if ((table as ListTableAPI).getEditor(targetCol, targetRow)) {\n (table as ListTableAPI).editorManager.startEditCell(targetCol, targetRow);\n }\n }\n }\n }\n }\n\n handleKeydownListener(e);\n });\n /**\n * 处理主动注册的keydown事件\n * @param e\n */\n function handleKeydownListener(e: KeyboardEvent) {\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.KEYDOWN)) {\n const cellsEvent: KeydownEvent = {\n keyCode: e.keyCode ?? e.which,\n code: e.code,\n event: e,\n // cells: table.getSelectedCellInfos(),\n scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth\n };\n table.fireListeners(TABLE_EVENT_TYPE.KEYDOWN, cellsEvent);\n }\n }\n\n handler.on(table.getElement(), 'copy', (e: KeyboardEvent) => {\n if (table.keyboardOptions?.copySelected) {\n const data = table.getCopyValue();\n if (isValid(data)) {\n e.preventDefault();\n if (navigator.clipboard?.write) {\n // 将复制的数据转为html格式\n const setDataToHTML = (data: string) => {\n const result = ['<table>'];\n const META_HEAD = [\n '<meta name=\"author\" content=\"Visactor\"/>', // 后面可用于vtable之间的快速复制粘贴\n //white-space:normal,连续的空白字符会被合并为一个空格,并且文本会根据容器的宽度自动换行显示\n //mso-data-placement:same-cell,excel专用, 在同一个单元格中显示所有数据,而不是默认情况下将数据分散到多个单元格中显示\n '<style type=\"text/css\">td{white-space:normal}br{mso-data-placement:same-cell}</style>'\n ].join('');\n const rows = data.split('\\r\\n'); // 将数据拆分为行\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: string[] = [];\n if (rowIndex === 0) {\n result.push('<tbody>');\n }\n cells.forEach(function (cell: string, cellIndex: number) {\n // 单元格数据处理\n const parsedCellData = !cell\n ? ' '\n : cell\n .toString()\n .replace(/&/g, '&amp;') // replace & with &amp; to prevent XSS attacks\n .replace(/'/g, '&#39;') // replace ' with &#39; to prevent XSS attacks\n .replace(/</g, '&lt;') // replace < with &lt; to prevent XSS attacks\n .replace(/>/g, '&gt;') // replace > with &gt; to prevent XSS attacks\n .replace(/\\n/g, '<br>') // replace \\n with <br> to prevent XSS attacks\n .replace(/(<br(\\s*|\\/)>(\\r\\n|\\n)?|\\r\\n|\\n)/g, '<br>\\r\\n') // replace <br> with <br>\\r\\n to prevent XSS attacks\n .replace(/\\x20{2,}/gi, (substring: string | any[]) => {\n // excel连续空格序列化\n return `<span style=\"mso-spacerun: yes\">${'&nbsp;'.repeat(substring.length - 1)} </span>`;\n }) // replace 2 or more spaces with &nbsp; to prevent XSS attacks\n .replace(/\\t/gi, '&#9;'); // replace \\t with &#9; to prevent XSS attacks\n\n rowValues.push(`<td>${parsedCellData}</td>`);\n });\n result.push('<tr>', ...rowValues, '</tr>');\n\n if (rowIndex === rows.length - 1) {\n result.push('</tbody>');\n }\n });\n result.push('</table>');\n return [META_HEAD, result.join('')].join('');\n };\n const dataHTML = setDataToHTML(data);\n navigator.clipboard.write([\n new ClipboardItem({\n 'text/html': new Blob([dataHTML], { type: 'text/html' }),\n 'text/plain': new Blob([data], { type: 'text/plain' })\n })\n ]);\n } else {\n if (browser.IE) {\n (window as any).clipboardData.setData('Text', data); // IE\n } else {\n (e as any).clipboardData.setData('text/plain', data); // Chrome, Firefox\n }\n }\n table.fireListeners(TABLE_EVENT_TYPE.COPY_DATA, {\n cellRange: table.stateManager.select.ranges,\n copyData: data\n });\n }\n }\n });\n handler.on(table.getElement(), 'paste', (e: any) => {\n if (table.keyboardOptions?.pasteValueToCell && (table as ListTableAPI).changeCellValues) {\n if ((table as ListTableAPI).editorManager?.editingEditor) {\n return;\n }\n if (table.stateManager.select.ranges?.length > 0) {\n if (navigator.clipboard?.read) {\n // 读取剪切板数据\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n // 优先处理 html 格式数据\n if (item.types.includes('text/html')) {\n pasteHtmlToTable(item);\n } else if (item.types.length === 1 && item.types[0] === 'text/plain') {\n pasteTextToTable(item);\n } else {\n // 其他情况\n }\n }\n });\n } else {\n const ranges = table.stateManager.select.ranges;\n const col = Math.min(ranges[0].start.col, ranges[0].end.col);\n const row = Math.min(ranges[0].start.row, ranges[0].end.row);\n\n const clipboardData = e.clipboardData || window.Clipboard;\n const pastedData = clipboardData.getData('text');\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n const values: (string | number)[][] = [];\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n // 去掉单元格数据末尾的 '\\r'\n if (cellIndex === cells.length - 1) {\n cell = cell.trim();\n }\n rowValues.push(cell);\n });\n });\n (table as ListTableAPI).changeCellValues(col, row, values);\n }\n }\n }\n });\n\n handler.on(table.getElement(), 'contextmenu', (e: any) => {\n if (table.eventOptions?.preventDefaultContextMenu !== false) {\n e.preventDefault();\n }\n });\n\n handler.on(table.getContainer(), 'resize', e => {\n if (e.width === 0 && e.height === 0) {\n // 临时绕行解决因为display设置为none产生的问题\n return;\n }\n if (!isValid(table.options.pixelRatio)) {\n table.setPixelRatio(getPixelRatio());\n }\n if (!e.windowSizeNotChange) {\n table.resize();\n }\n });\n\n // const regex = /<tr[^>]*>(.*?)<\\/tr>/gs; // 匹配<tr>标签及其内容\n const regex = /<tr[^>]*>([\\s\\S]*?)<\\/tr>/g; // for webpack3\n // const cellRegex = /<td[^>]*>(.*?)<\\/td>/gs; // 匹配<td>标签及其内容\n const cellRegex = /<td[^>]*>([\\s\\S]*?)<\\/td>/g; // for webpack3\n\n function pasteHtmlToTable(item: ClipboardItem) {\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n item.getType('text/html').then((blob: any) => {\n blob.text().then((pastedData: any) => {\n // 解析html数据\n if (pastedData && /(<table)|(<TABLE)/g.test(pastedData)) {\n // const matches = pastedData.matchAll(regex);\n const matches = Array.from(pastedData.matchAll(regex));\n for (const match of matches) {\n const rowContent = match[1]; // 获取<tr>标签中的内容\n const cellMatches: RegExpMatchArray[] = Array.from(rowContent.matchAll(cellRegex)); // 获取<td>标签中的内容\n const rowValues = cellMatches.map(cellMatch => {\n return (\n cellMatch[1]\n .replace(/(<(?!br)([^>]+)>)/gi, '') // 除了 <br> 标签以外的所有 HTML 标签都替换为空字符串\n .replace(/<br(\\s*|\\/)>[\\r\\n]?/gim, '\\n') // 将字符串中的 <br> 标签以及其后可能存在的空白字符和斜杠都替换为换行符 \\n\n // .replace(/<br>/g, '\\n') // 替换<br>标签为换行符\n // .replace(/<(?:.|\\n)*?>/gm, '') // 去除HTML标签\n //将字符串中的 HTML 实体字符转换为原始的字符\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&#9;/gi, '\\t')\n .replace(/&nbsp;/g, ' ')\n );\n // .trim(); // 去除首尾空格\n });\n values.push(rowValues);\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n }\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n } else {\n navigator.clipboard.read().then(clipboardItems => {\n for (const item of clipboardItems) {\n if (item.types.includes('text/plain')) {\n item.getType('text/plain').then((blob: Blob) => {\n blob.text().then(_pasteValue);\n });\n }\n }\n });\n }\n });\n });\n }\n\n function _pasteValue(pastedData: string) {\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n let values: (string | number)[][] = [];\n const rows = pastedData.split('\\n'); // 将数据拆分为行\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n // 去掉单元格数据末尾的 '\\r'\n if (cellIndex === cells.length - 1) {\n cell = cell.trim();\n }\n rowValues.push(cell);\n });\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(values, pasteValuesRowCount, pasteValuesColCount, maxRow - row + 1, maxCol - col + 1);\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n }\n function pasteTextToTable(item: ClipboardItem) {\n // 如果只有 'text/plain'\n const ranges = table.stateManager.select.ranges;\n const selectRangeLength = ranges.length;\n const col = Math.min(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const row = Math.min(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n const maxCol = Math.max(ranges[selectRangeLength - 1].start.col, ranges[selectRangeLength - 1].end.col);\n const maxRow = Math.max(ranges[selectRangeLength - 1].start.row, ranges[selectRangeLength - 1].end.row);\n let pasteValuesColCount = 0;\n let pasteValuesRowCount = 0;\n // const values: (string | number)[][] = [];\n item.getType('text/plain').then((blob: any) => {\n blob.text().then((pastedData: any) => {\n const rows = pastedData.replace(/\\r(?!\\n)/g, '\\r\\n').split('\\r\\n'); // 文本中的换行符格式进行统一处理\n let values: (string | number)[][] = [];\n if (rows.length > 1 && rows[rows.length - 1] === '') {\n rows.pop();\n }\n rows.forEach(function (rowCells: any, rowIndex: number) {\n const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n const rowValues: (string | number)[] = [];\n values.push(rowValues);\n cells.forEach(function (cell: string, cellIndex: number) {\n if (cell.includes('\\n')) {\n cell = cell\n .replace(/^\"(.*)\"$/, '$1') // 将字符串开头和结尾的双引号去除,并保留双引号内的内容\n .replace(/[\"]*/g, match => new Array(Math.floor(match.length / 2)).fill('\"').join('')); // 连续出现的双引号替换为一半数量的双引号\n }\n rowValues.push(cell);\n });\n pasteValuesColCount = Math.max(pasteValuesColCount, rowValues?.length ?? 0);\n });\n pasteValuesRowCount = values.length ?? 0;\n values = handlePasteValues(\n values,\n pasteValuesRowCount,\n pasteValuesColCount,\n maxRow - row + 1,\n maxCol - col + 1\n );\n (table as ListTableAPI).changeCellValues(col, row, values, true);\n });\n });\n }\n function handlePasteValues(\n values: (string | number)[][],\n rowCount: number,\n colCount: number,\n selectedRowCount: number,\n selectedColCount: number\n ) {\n if (selectedColCount > colCount || selectedRowCount > rowCount) {\n if (selectedColCount % colCount === 0 && selectedRowCount % rowCount === 0) {\n const toPasteValues: (string | number)[][] = [];\n // 在目标区域中循环遍历,将复制的值逐个粘贴到每个单元格中\n for (let i = 0; i < selectedRowCount; i++) {\n const rowPasteValue: (string | number)[] = [];\n toPasteValues.push(rowPasteValue);\n for (let j = 0; j < selectedColCount; j++) {\n const copiedRow = i % rowCount;\n const copiedCol = j % colCount;\n rowPasteValue.push(values[copiedRow][copiedCol]);\n }\n }\n return toPasteValues;\n }\n return values;\n }\n return values;\n }\n // 有被阻止冒泡的场景 就触发不到这里的事件了 所以这个LastBodyPointerXY变量的赋值在scrollbar的down事件也进行了处理\n const globalPointerdownCallback = (e: MouseEvent) => {\n // console.log('body pointerdown');\n table.eventManager.LastBodyPointerXY = { x: e.x, y: e.y };\n table.eventManager.isDown = true;\n };\n eventManager.globalEventListeners.push({\n name: 'pointerdown',\n env: 'body',\n callback: globalPointerdownCallback\n });\n document.body.addEventListener('pointerdown', globalPointerdownCallback);\n\n const globalPointerupCallback = (e: MouseEvent) => {\n table.eventManager.LastBodyPointerXY = null;\n // console.log('body pointerup', table.eventManager.isDown, table.eventManager.isDraging);\n table.eventManager.isDown = false;\n table.eventManager.isDraging = false;\n table.eventManager.inertiaScroll.endInertia();\n if (stateManager.isResizeCol()) {\n endResizeCol(table);\n } else if (stateManager.isResizeRow()) {\n endResizeRow(table);\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointerup',\n env: 'document',\n callback: globalPointerupCallback\n });\n document.addEventListener('pointerup', globalPointerupCallback);\n\n const globalPointermoveCallback = (e: MouseEvent) => {\n if (table.eventManager.isDown && table.eventManager.LastBodyPointerXY) {\n const lastX = table.eventManager.LastBodyPointerXY?.x ?? e.x;\n const lastY = table.eventManager.LastBodyPointerXY?.y ?? e.y;\n if (Math.abs(lastX - e.x) > 1 || Math.abs(lastY - e.y) > 1) {\n table.eventManager.isDraging = true;\n }\n }\n // 注释掉。因为: 这里pointermove太敏感了 点击快的时候 可能动了1px这里也会执行到 就影响到下面选中不触发的问题。下面pointermove就有这段逻辑,这里先去掉\n // if (eventManager.touchSetTimeout) {\n // clearTimeout(eventManager.touchSetTimeout);\n // console.log('eventManager.touchSetTimeout', eventManager.touchSetTimeout);\n // eventManager.touchSetTimeout = undefined;\n // }\n // const eventArgsSet = getCellEventArgsSet(e);\n const { x, y } = table._getMouseAbstractPoint(e, false);\n // if (stateManager.interactionState === InteractionState.scrolling) {\n // return;\n // }\n if (stateManager.interactionState === InteractionState.grabing) {\n if (stateManager.isResizeCol()) {\n eventManager.dealColumnResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN, {\n col: table.stateManager.columnResize.col,\n colWidth: table.getColWidth(table.stateManager.columnResize.col)\n });\n }\n } else if (stateManager.isResizeRow()) {\n eventManager.dealRowResize(x, y);\n if ((table as any).hasListeners(TABLE_EVENT_TYPE.RESIZE_ROW)) {\n table.fireListeners(TABLE_EVENT_TYPE.RESIZE_ROW, {\n row: table.stateManager.rowResize.row,\n rowHeight: table.getRowHeight(table.stateManager.rowResize.row)\n });\n }\n }\n }\n const isSelecting = table.stateManager.isSelecting();\n\n if (\n eventManager._enableTableScroll &&\n eventManager.isDraging &&\n isSelecting &&\n table.stateManager.select.ranges?.length > 0\n ) {\n // 检测鼠标是否离开了table\n const drawRange = table.getDrawRange();\n // const element = table.getElement();\n // const { x: rootLeft, y: rootTop, width: rootWidth } = element.getBoundingClientRect();\n // const tableLeft = drawRange.left + rootLeft;\n // const tableTop = drawRange.top + rootTop;\n // const tableRight = tableLeft + drawRange.width;\n // const tableBottom = tableTop + drawRange.height;\n // console.log('x, y', x, y);\n const topFrozenRowHeight = table.getFrozenRowsHeight();\n const bottomFrozenRowHeight = table.getBottomFrozenRowsHeight();\n const leftFrozenColsWidth = table.getFrozenColsWidth();\n const rightFrozenColsWidth = table.getRightFrozenColsWidth();\n const startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start;\n const endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end;\n const canScrollY =\n (table.isFrozenRow(startCell.row) === false || table.isFrozenRow(endCell.row) === false) &&\n table.getAllRowsHeight() > table.tableNoFrameHeight;\n const canScrollX =\n (table.isFrozenColumn(startCell.col) === false || table.isFrozenColumn(endCell.col) === false) &&\n table.getAllColsWidth() > table.tableNoFrameWidth;\n if (\n ((y > drawRange.bottom - bottomFrozenRowHeight || y < drawRange.top + topFrozenRowHeight) && canScrollY) ||\n ((x > drawRange.right - rightFrozenColsWidth || x < drawRange.left + leftFrozenColsWidth) && canScrollX)\n ) {\n table.eventManager.scrollXSpeed = 0;\n table.eventManager.scrollYSpeed = 0;\n let bottom = false;\n let top = false;\n let right = false;\n let left = false;\n if (\n y > drawRange.bottom - bottomFrozenRowHeight &&\n canScrollY &&\n table.scrollTop + table.tableNoFrameWidth < table.getAllRowsHeight()\n ) {\n bottom = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.bottom + bottomFrozenRowHeight) / 50;\n } else if (y < drawRange.top + topFrozenRowHeight && canScrollY && table.scrollTop > 0) {\n top = true;\n table.eventManager.scrollYSpeed = -(y - drawRange.top - topFrozenRowHeight) / 50;\n }\n\n if (\n x > drawRange.right - rightFrozenColsWidth &&\n canScrollX &&\n table.scrollLeft + table.tableNoFrameWidth < table.getAllColsWidth()\n ) {\n right = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.right + rightFrozenColsWidth) / 50;\n } else if (x < drawRange.left + leftFrozenColsWidth && canScrollX && table.scrollLeft > 0) {\n left = true;\n table.eventManager.scrollXSpeed = -(x - drawRange.left - leftFrozenColsWidth) / 50;\n }\n table.eventManager.inertiaScroll.startInertia(\n table.eventManager.scrollXSpeed,\n table.eventManager.scrollYSpeed,\n 1\n );\n table.eventManager.inertiaScroll.setScrollHandle((dx: number, dy: number) => {\n handleWhell({ deltaX: -dx, deltaY: -dy } as any, table.stateManager, false);\n\n let selectX: number;\n let selectY: number;\n\n if (bottom) {\n selectY = table.scrollTop + drawRange.height - bottomFrozenRowHeight - 20;\n } else if (top) {\n selectY = table.scrollTop + topFrozenRowHeight + 20;\n }\n\n if (right) {\n selectX = table.scrollLeft + drawRange.width - rightFrozenColsWidth - 20;\n } else if (left) {\n selectX = table.scrollLeft + leftFrozenColsWidth + 20;\n }\n\n let considerFrozenY = false;\n let considerFrozenX = false;\n if (!right && !left) {\n if (\n (x > table.tableNoFrameWidth - table.getRightFrozenColsWidth() && x < table.tableNoFrameWidth) ||\n (x > 0 && x < table.getFrozenColsWidth())\n ) {\n selectX = x;\n considerFrozenX = true;\n } else {\n selectX = table.scrollLeft + x;\n }\n }\n if (!bottom && !top) {\n if (\n (y > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && y < table.tableNoFrameHeight) ||\n (y > 0 && y < table.getFrozenRowsHeight())\n ) {\n selectY = y;\n considerFrozenY = true;\n } else {\n selectY = table.scrollTop + y;\n }\n }\n table.stateManager.updateInteractionState(InteractionState.grabing);\n const targetCol = table.getTargetColAtConsiderRightFrozen(selectX, considerFrozenX);\n const targetRow = table.getTargetRowAtConsiderBottomFrozen(selectY, considerFrozenY);\n if (isValid(targetCol) && isValid(targetRow)) {\n table.stateManager.updateSelectPos(targetCol.col, targetRow.row, false, false, false, true);\n }\n });\n } else if (table.eventManager.inertiaScroll.isInertiaScrolling()) {\n table.eventManager.inertiaScroll.endInertia();\n } else {\n table.eventManager.scrollYSpeed = 0;\n }\n }\n };\n eventManager.globalEventListeners.push({\n name: 'pointermove',\n env: 'body',\n callback: globalPointermoveCallback\n });\n document.body.addEventListener('pointermove', globalPointermoveCallback);\n}\n"]}
@@ -39,8 +39,9 @@ function isScrollToTop(deltaY, state) {
39
39
  }
40
40
 
41
41
  function isScrollToBottom(deltaY, state) {
42
- const totalHeight = state.table.getAllRowsHeight() - state.table.scenegraph.height;
43
- return 0 !== totalHeight && deltaY >= 0 && Math.abs(state.scroll.verticalBarPos - totalHeight) < 1;
42
+ var _a;
43
+ const sizeTolerance = (null === (_a = state.table.options.customConfig) || void 0 === _a ? void 0 : _a._disableColumnAndRowSizeRound) ? 1 : 0, totalHeight = state.table.getAllRowsHeight() - state.table.scenegraph.height;
44
+ return 0 !== totalHeight && deltaY >= 0 && Math.abs(state.scroll.verticalBarPos - totalHeight) < 1 + sizeTolerance;
44
45
  }
45
46
 
46
47
  function isScrollToLeft(deltaX, state) {
@@ -48,8 +49,9 @@ function isScrollToLeft(deltaX, state) {
48
49
  }
49
50
 
50
51
  function isScrollToRight(deltaX, state) {
51
- const totalWidth = state.table.getAllColsWidth() - state.table.scenegraph.width;
52
- return 0 !== totalWidth && deltaX >= 0 && Math.abs(state.scroll.horizontalBarPos - totalWidth) < 1;
52
+ var _a;
53
+ const sizeTolerance = (null === (_a = state.table.options.customConfig) || void 0 === _a ? void 0 : _a._disableColumnAndRowSizeRound) ? 1 : 0, totalWidth = state.table.getAllColsWidth() - state.table.scenegraph.width;
54
+ return 0 !== totalWidth && deltaX >= 0 && Math.abs(state.scroll.horizontalBarPos - totalWidth) < 1 + sizeTolerance;
53
55
  }
54
56
 
55
57
  exports.handleWhell = handleWhell, exports.isVerticalScrollable = isVerticalScrollable,