@visactor/vtable-plugins 1.22.7 → 1.22.8-alpha.13

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 (69) hide show
  1. package/cjs/excel-edit-cell-keyboard.js +1 -0
  2. package/cjs/excel-edit-cell-keyboard.js.map +1 -1
  3. package/cjs/filter/condition-filter.d.ts +13 -2
  4. package/cjs/filter/condition-filter.js +69 -172
  5. package/cjs/filter/condition-filter.js.map +1 -1
  6. package/cjs/filter/constant.d.ts +7 -0
  7. package/cjs/filter/constant.js +124 -0
  8. package/cjs/filter/constant.js.map +1 -0
  9. package/cjs/filter/filter-engine.d.ts +3 -1
  10. package/cjs/filter/filter-engine.js +6 -4
  11. package/cjs/filter/filter-engine.js.map +1 -1
  12. package/cjs/filter/filter-state-manager.js +8 -2
  13. package/cjs/filter/filter-state-manager.js.map +1 -1
  14. package/cjs/filter/filter-toolbar.d.ts +9 -4
  15. package/cjs/filter/filter-toolbar.js +44 -27
  16. package/cjs/filter/filter-toolbar.js.map +1 -1
  17. package/cjs/filter/filter.d.ts +2 -0
  18. package/cjs/filter/filter.js +29 -15
  19. package/cjs/filter/filter.js.map +1 -1
  20. package/cjs/filter/styles.js +1 -1
  21. package/cjs/filter/styles.js.map +1 -1
  22. package/cjs/filter/types.d.ts +35 -0
  23. package/cjs/filter/types.js.map +1 -1
  24. package/cjs/filter/value-filter.d.ts +10 -2
  25. package/cjs/filter/value-filter.js +115 -57
  26. package/cjs/filter/value-filter.js.map +1 -1
  27. package/cjs/focus-highlight.js +1 -1
  28. package/cjs/focus-highlight.js.map +1 -1
  29. package/cjs/master-detail-plugin/checkbox.js +0 -1
  30. package/cjs/master-detail-plugin/config.js +2 -1
  31. package/cjs/master-detail-plugin/utils.js +1 -1
  32. package/cjs/table-series-number.js +1 -0
  33. package/cjs/table-series-number.js.map +1 -1
  34. package/dist/vtable-plugins.js +9839 -168
  35. package/dist/vtable-plugins.min.js +3 -3
  36. package/es/excel-edit-cell-keyboard.js +1 -0
  37. package/es/excel-edit-cell-keyboard.js.map +1 -1
  38. package/es/filter/condition-filter.d.ts +13 -2
  39. package/es/filter/condition-filter.js +67 -168
  40. package/es/filter/condition-filter.js.map +1 -1
  41. package/es/filter/constant.d.ts +7 -0
  42. package/es/filter/constant.js +120 -0
  43. package/es/filter/constant.js.map +1 -0
  44. package/es/filter/filter-engine.d.ts +3 -1
  45. package/es/filter/filter-engine.js +6 -4
  46. package/es/filter/filter-engine.js.map +1 -1
  47. package/es/filter/filter-state-manager.js +8 -2
  48. package/es/filter/filter-state-manager.js.map +1 -1
  49. package/es/filter/filter-toolbar.d.ts +9 -4
  50. package/es/filter/filter-toolbar.js +44 -24
  51. package/es/filter/filter-toolbar.js.map +1 -1
  52. package/es/filter/filter.d.ts +2 -0
  53. package/es/filter/filter.js +36 -16
  54. package/es/filter/filter.js.map +1 -1
  55. package/es/filter/styles.js +1 -1
  56. package/es/filter/styles.js.map +1 -1
  57. package/es/filter/types.d.ts +35 -0
  58. package/es/filter/types.js.map +1 -1
  59. package/es/filter/value-filter.d.ts +10 -2
  60. package/es/filter/value-filter.js +112 -54
  61. package/es/filter/value-filter.js.map +1 -1
  62. package/es/focus-highlight.js +1 -1
  63. package/es/focus-highlight.js.map +1 -1
  64. package/es/master-detail-plugin/checkbox.js +1 -2
  65. package/es/master-detail-plugin/config.js +2 -1
  66. package/es/master-detail-plugin/utils.js +1 -1
  67. package/es/table-series-number.js +1 -0
  68. package/es/table-series-number.js.map +1 -1
  69. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/filter/value-filter.ts"],"names":[],"mappings":"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","file":"value-filter.js","sourcesContent":["import { ListTable, PivotTable } from '@visactor/vtable';\nimport { arrayEqual } from '@visactor/vutils';\nimport type { FilterConfig, ValueFilterOptionDom, FilterState } from './types';\nimport { FilterActionType } from './types';\nimport type { FilterStateManager } from './filter-state-manager';\nimport { applyStyles, filterStyles } from './styles';\n\nexport class ValueFilter {\n private table: ListTable | PivotTable;\n private filterStateManager: FilterStateManager;\n private selectedField: string | number;\n private selectedKeys = new Map<string | number, Set<string | number>>(); // 存储 format 之前的原始数据\n private candidateKeys = new Map<string | number, Map<string | number, number>>(); // 存储 format 后的数据\n private formatFnCache = new Map<string | number, (record: any) => string | number>();\n private toUnformattedCache = new Map<string | number, Map<any, Set<any>>>();\n\n private valueFilterOptionList: Map<string | number, ValueFilterOptionDom[]> = new Map();\n private filterByValuePanel: HTMLElement;\n private filterByValueSearchInput: HTMLInputElement;\n private selectAllCheckbox: HTMLInputElement;\n private totalCountSpan: HTMLSpanElement;\n private filterItemsContainer: HTMLElement;\n\n private _onInputKeyUpHandler: (event: KeyboardEvent) => void;\n private _onCheckboxChangeHandler: (event: Event) => void;\n\n constructor(table: ListTable | PivotTable, filterStateManager: FilterStateManager) {\n this.table = table;\n this.filterStateManager = filterStateManager;\n }\n\n setSelectedField(fieldId: string | number): void {\n this.selectedField = fieldId;\n }\n\n private getFormatFnCache(fieldId: string | number) {\n let formatFn = this.formatFnCache.get(fieldId);\n if (formatFn !== null && formatFn !== undefined) {\n return formatFn;\n }\n\n const headerAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(String(fieldId));\n const bodyInfo = this.table.internalProps.layoutMap.getBody(headerAddress?.col, headerAddress?.row);\n if (bodyInfo && 'fieldFormat' in bodyInfo && typeof bodyInfo.fieldFormat === 'function') {\n formatFn = bodyInfo.fieldFormat;\n } else if (bodyInfo && 'format' in bodyInfo && typeof bodyInfo.format === 'function') {\n formatFn = bodyInfo.format;\n } else {\n formatFn = (record: any) => record[fieldId];\n }\n\n this.formatFnCache.set(fieldId, formatFn);\n return formatFn;\n }\n\n private getRecords(table: ListTable | PivotTable, original: boolean): any[] {\n if (original === true) {\n return table.internalProps.records;\n }\n\n const records = [];\n const stack = [...table.internalProps.dataSource.records];\n while (stack.length > 0) {\n const item = stack.pop();\n\n if (item.vtableMerge && Array.isArray(item.children)) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n stack.push(item.children[i]);\n }\n } else {\n records.push(item);\n }\n }\n\n return records.reverse();\n }\n\n /**\n * 为未应用筛选的列,收集候选值集合\n */\n private collectCandidateKeysForUnfilteredColumn(fieldId: string | number): void {\n const countMap = new Map<any, number>(); // 计算每个候选值的计数\n const records = this.getRecords(this.table, false); // 未筛选:使用当前表格数据\n const formatFn = this.getFormatFnCache(fieldId);\n const toUnformatted = new Map();\n\n records.forEach(record => {\n const originalValue = record[fieldId];\n const formattedValue = formatFn(record);\n if (formattedValue !== undefined && formattedValue !== null) {\n countMap.set(formattedValue, (countMap.get(formattedValue) || 0) + 1);\n\n const unformattedSet = toUnformatted.get(formattedValue);\n if (unformattedSet !== undefined && unformattedSet !== null) {\n unformattedSet.add(originalValue);\n } else {\n toUnformatted.set(formattedValue, new Set([originalValue]));\n }\n }\n });\n\n this.candidateKeys.set(fieldId, countMap);\n this.toUnformattedCache.set(fieldId, toUnformatted);\n }\n\n /**\n * 为已应用筛选的列,收集候选值集合\n */\n private collectCandidateKeysForFilteredColumn(candidateField: string | number): void {\n const filteredFields = this.filterStateManager.getActiveFilterFields().filter(field => field !== candidateField);\n const toUnformatted = new Map();\n const formatFn = this.getFormatFnCache(candidateField);\n\n const countMap = new Map<any, number>(); // 计算每个候选值的计数\n const recordsList = this.getRecords(this.table, true); // 已筛选:使用原始表格数据\n const records = recordsList.filter(record =>\n filteredFields.every(field => {\n const filterType = this.filterStateManager.getFilterState(field)?.type;\n if (filterType !== 'byValue' && filterType !== null && filterType !== undefined) {\n this.syncSingleStateFromTableData(field);\n }\n const set = this.selectedKeys.get(field);\n return set.has(record[field]);\n })\n );\n\n records.forEach(record => {\n const originalValue = record[candidateField];\n const formattedValue = formatFn(record);\n countMap.set(formattedValue, (countMap.get(formattedValue) || 0) + 1);\n if (formattedValue !== undefined && formattedValue !== null) {\n const unformattedSet = toUnformatted.get(formattedValue);\n if (unformattedSet !== undefined && unformattedSet !== null) {\n unformattedSet.add(originalValue);\n } else {\n toUnformatted.set(formattedValue, new Set([originalValue]));\n }\n }\n });\n\n this.candidateKeys.set(candidateField, countMap);\n this.toUnformattedCache.set(candidateField, toUnformatted);\n }\n\n private toggleSelectAll(fieldId: string | number, selected: boolean): void {\n const options = this.valueFilterOptionList.get(fieldId);\n options.forEach(option => {\n option.checkbox.checked = selected;\n });\n }\n\n private syncSelectAllCheckbox(fieldId: string | number): void {\n const options = this.valueFilterOptionList.get(fieldId) || [];\n const allChecked = options.every(o => o.checkbox.checked);\n const noneChecked = options.every(o => !o.checkbox.checked);\n\n this.selectAllCheckbox.checked = allChecked;\n this.selectAllCheckbox.indeterminate = !allChecked && !noneChecked;\n }\n\n private onSearch(fieldId: string | number, value: string): void {\n // 更新UI显示\n const items = this.valueFilterOptionList.get(fieldId);\n const filterKeywords = value\n .toUpperCase()\n .split(' ')\n .filter(s => s);\n\n for (const item of items) {\n const txtValue = item.id.toUpperCase() || '';\n const match = filterKeywords.some(keyword => txtValue.includes(keyword));\n const isVisible = filterKeywords.length === 0 || match;\n\n item.itemContainer.style.display = isVisible ? 'flex' : 'none';\n }\n }\n\n /**\n * 根据当前表格中的数据,更新 filter 的被选状态\n * 适用情况:表格数据发生变化,或者需要自动检测当前表格的数据情况\n */\n syncSingleStateFromTableData(fieldId: string | number): void {\n const selectedValues = new Set<any>();\n const originalValues = new Set<any>();\n\n const currentRecords = this.table.internalProps.dataSource.records; // 当前数据\n currentRecords.forEach(record => {\n selectedValues.add(record[fieldId]);\n });\n\n const originalRecords = this.table.internalProps.records; // 原始数据\n originalRecords.forEach(record => {\n originalValues.add(record[fieldId]);\n });\n\n const hasFiltered = !arrayEqual(Array.from(originalValues), Array.from(selectedValues));\n if (hasFiltered) {\n this.selectedKeys.set(fieldId, selectedValues);\n\n this.filterStateManager.dispatch({\n type: FilterActionType.UPDATE_FILTER,\n payload: {\n field: fieldId,\n values: Array.from(selectedValues),\n enable: true\n }\n });\n }\n }\n\n applyFilter(fieldId: string | number = this.selectedField): void {\n const options = this.valueFilterOptionList.get(fieldId);\n if (!options || options.length === 0) {\n return;\n }\n\n const selections = options\n .map(option => {\n if (option.checkbox.checked) {\n return option.originalValue;\n }\n return null;\n })\n .filter(key => key !== null)\n .flat();\n\n this.selectedKeys.set(fieldId, new Set(selections));\n\n if (selections.length > 0 && selections.length < this.valueFilterOptionList.get(fieldId).length) {\n this.filterStateManager.dispatch({\n type: FilterActionType.APPLY_FILTERS,\n payload: {\n field: fieldId,\n type: 'byValue',\n values: selections,\n enable: true\n }\n });\n } else {\n this.filterStateManager.dispatch({\n type: FilterActionType.REMOVE_FILTER,\n payload: {\n field: fieldId\n }\n });\n }\n }\n\n clearFilter(fieldId: string | number): void {\n this.filterStateManager.dispatch({\n type: FilterActionType.REMOVE_FILTER,\n payload: {\n field: fieldId\n }\n });\n\n this.hide();\n }\n\n render(container: HTMLElement): void {\n // === 按值筛选的菜单内容 ===\n this.filterByValuePanel = document.createElement('div');\n applyStyles(this.filterByValuePanel, filterStyles.filterPanel);\n\n // -- 搜索栏 ---\n const searchContainer = document.createElement('div');\n applyStyles(searchContainer, filterStyles.searchContainer);\n\n this.filterByValueSearchInput = document.createElement('input');\n this.filterByValueSearchInput.type = 'text';\n this.filterByValueSearchInput.placeholder = '可使用空格分隔多个关键词';\n applyStyles(this.filterByValueSearchInput, filterStyles.searchInput);\n\n searchContainer.appendChild(this.filterByValueSearchInput);\n\n // --- 筛选选项 ---\n const optionsContainer = document.createElement('div');\n applyStyles(optionsContainer, filterStyles.optionsContainer);\n\n const selectAllItemDiv = document.createElement('div');\n applyStyles(selectAllItemDiv, filterStyles.optionItem);\n\n const selectAllLabel = document.createElement('label');\n applyStyles(selectAllLabel, filterStyles.optionLabel);\n\n this.selectAllCheckbox = document.createElement('input');\n this.selectAllCheckbox.type = 'checkbox';\n this.selectAllCheckbox.checked = true; // 默认全选\n applyStyles(this.selectAllCheckbox, filterStyles.checkbox);\n\n this.totalCountSpan = document.createElement('span');\n this.totalCountSpan.textContent = '';\n applyStyles(this.totalCountSpan, filterStyles.countSpan);\n\n selectAllLabel.append(this.selectAllCheckbox, ' 全选');\n selectAllItemDiv.append(selectAllLabel, this.totalCountSpan);\n\n this.filterItemsContainer = document.createElement('div'); // 筛选条目的容器,后续应动态 appendChild\n\n optionsContainer.append(selectAllItemDiv, this.filterItemsContainer);\n this.filterByValuePanel.append(searchContainer, optionsContainer);\n\n container.appendChild(this.filterByValuePanel);\n\n this.bindEventForFilterByValue();\n }\n\n private renderFilterOptions(field: string | number): void {\n this.filterItemsContainer.innerHTML = '';\n this.valueFilterOptionList.delete(field);\n this.valueFilterOptionList.set(field, []);\n\n let totalCount = 0;\n let allChecked = true;\n let noneChecked = true;\n const selectedKeysSet = this.selectedKeys.get(field);\n const itemDomList: ValueFilterOptionDom[] = [];\n const isFiltered = this.filterStateManager.getFilterState(field)?.enable;\n const toUnformatted = this.toUnformattedCache.get(field);\n\n const candidates = this.candidateKeys.get(field);\n if (!candidates || candidates.size === 0) {\n return;\n }\n const candidatesArr = [...candidates.entries()] as [string, number][] | [number, number][];\n const sortedCandidatesArr =\n typeof candidatesArr[0][0] === 'number'\n ? [...candidatesArr]?.sort(([a], [b]) => Number(a) - Number(b))\n : [...candidatesArr]?.sort(([a], [b]) => String(a).localeCompare(String(b)));\n\n sortedCandidatesArr?.forEach(([val, count]) => {\n totalCount += count;\n const unformattedArr = Array.from(toUnformatted.get(val) || new Set());\n const itemDiv = document.createElement('div');\n applyStyles(itemDiv, filterStyles.optionItem);\n itemDiv.style.display = 'flex';\n\n const label = document.createElement('label');\n applyStyles(label, filterStyles.optionLabel);\n\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.value = String(val); // 显示值作为checkbox的value\n checkbox.checked = isFiltered ? unformattedArr.some(v => selectedKeysSet?.has(v)) : true;\n applyStyles(checkbox, filterStyles.checkbox);\n\n if (checkbox.checked) {\n noneChecked = false;\n } else {\n allChecked = false;\n }\n\n const countSpan = document.createElement('span');\n countSpan.textContent = String(count);\n applyStyles(countSpan, filterStyles.countSpan);\n\n label.append(checkbox, ` ${val}`); // UI显示格式化值\n itemDiv.append(label, countSpan);\n this.filterItemsContainer.appendChild(itemDiv);\n\n const itemDom: ValueFilterOptionDom = {\n id: String(val), // 显示值作为id,用于UI交互\n originalValue: unformattedArr,\n itemContainer: itemDiv,\n checkbox: checkbox,\n countSpan: countSpan\n };\n\n itemDomList.push(itemDom);\n });\n\n this.valueFilterOptionList.set(field, itemDomList);\n this.selectAllCheckbox.checked = allChecked;\n this.selectAllCheckbox.indeterminate = !allChecked && !noneChecked;\n this.totalCountSpan.textContent = String(totalCount);\n }\n\n private bindEventForFilterByValue(): void {\n this._onInputKeyUpHandler = (event: KeyboardEvent) => {\n const target = event.target as EventTarget;\n if (target instanceof HTMLInputElement && target.type === 'text') {\n const value = target.value;\n this.onSearch(this.selectedField, value);\n }\n };\n\n this._onCheckboxChangeHandler = (event: Event) => {\n const target = event.target as EventTarget;\n if (target instanceof HTMLInputElement && target.type === 'checkbox') {\n if (target === this.selectAllCheckbox) {\n this.toggleSelectAll(this.selectedField, this.selectAllCheckbox.checked);\n } else {\n this.syncSelectAllCheckbox(this.selectedField);\n }\n }\n };\n\n this.filterByValuePanel.addEventListener('keyup', this._onInputKeyUpHandler);\n this.filterByValuePanel.addEventListener('change', this._onCheckboxChangeHandler);\n }\n\n show(): void {\n // 1. 收集候选值列表(根据筛选状态选择数据源)\n const isFiltered = this.filterStateManager.getFilterState(this.selectedField)?.enable;\n if (!isFiltered) {\n this.collectCandidateKeysForUnfilteredColumn(this.selectedField);\n } else {\n this.collectCandidateKeysForFilteredColumn(this.selectedField);\n }\n\n // 2. 初始筛选状态\n const filterType = this.filterStateManager.getFilterState(this.selectedField)?.type;\n if (filterType !== null && filterType !== undefined && filterType !== 'byValue') {\n this.syncSingleStateFromTableData(this.selectedField);\n }\n\n // 3. 清空搜索框\n if (this.filterByValueSearchInput) {\n this.filterByValueSearchInput.value = '';\n }\n\n // 4. 渲染选项(此时状态已经初始化完成)\n this.renderFilterOptions(this.selectedField);\n this.filterByValuePanel.style.display = 'block';\n }\n\n hide(): void {\n this.filterByValuePanel.style.display = 'none';\n }\n\n clearSearchInputValue(): void {\n this.filterByValueSearchInput.value = '';\n }\n\n destroy(): void {\n if (this.filterByValuePanel) {\n if (this._onInputKeyUpHandler) {\n this.filterByValuePanel.removeEventListener('keyup', this._onInputKeyUpHandler);\n }\n if (this._onCheckboxChangeHandler) {\n this.filterByValuePanel.removeEventListener('change', this._onCheckboxChangeHandler);\n }\n }\n this._onInputKeyUpHandler = undefined as any;\n this._onCheckboxChangeHandler = undefined as any;\n\n if (this.filterByValuePanel) {\n const parent = this.filterByValuePanel.parentElement;\n if (parent) {\n parent.removeChild(this.filterByValuePanel);\n } else {\n // if not attached, ensure it's removed\n this.filterByValuePanel.remove();\n }\n }\n\n // clear DOM contents to release child references\n if (this.filterItemsContainer) {\n this.filterItemsContainer.innerHTML = '';\n }\n if (this.filterByValueSearchInput) {\n this.filterByValueSearchInput.value = '';\n }\n\n // Clear in-memory caches and collections to avoid unbounded growth\n this.selectedKeys && this.selectedKeys.clear();\n this.candidateKeys && this.candidateKeys.clear();\n this.formatFnCache && this.formatFnCache.clear();\n this.toUnformattedCache && this.toUnformattedCache.clear();\n this.valueFilterOptionList && this.valueFilterOptionList.clear();\n\n // Nullify references (use casts to avoid TS strict errors at assignment)\n (this.filterByValuePanel as any) = undefined;\n (this.filterByValueSearchInput as any) = undefined;\n (this.selectAllCheckbox as any) = undefined;\n (this.totalCountSpan as any) = undefined;\n (this.filterItemsContainer as any) = undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/filter/value-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,OAAO,WAAW;IA0BtB,YAAY,KAA6B,EAAE,kBAAsC,EAAE,aAA4B;QApBvG,iBAAY,GAAG,IAAI,GAAG,EAAyC,CAAC;QAChE,kBAAa,GAAG,IAAI,GAAG,EAAiD,CAAC;QACzE,kBAAa,GAAG,IAAI,GAAG,EAAqD,CAAC;QAC7E,uBAAkB,GAAG,IAAI,GAAG,EAAuC,CAAC;QAEpE,0BAAqB,GAAiD,IAAI,GAAG,EAAE,CAAC;QAgBtF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,OAAwB;QACvC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAEO,gBAAgB,CAAC,OAAwB;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC/C,OAAO,QAAQ,CAAC;SACjB;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC,CAAC;QACpG,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE;YACvF,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;SACjC;aAAM,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE;YACpF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;SAC5B;aAAM;YACL,QAAQ,GAAG,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,KAA6B,EAAE,QAAiB;QACjE,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;SACpC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACpD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9B;aACF;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAKO,uCAAuC,CAAC,OAAwB;;QACtE,MAAM,oBAAoB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,oBAAoB,mCAAI,IAAI,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QACxC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,oBAAoB,EAAE;YACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;SAC5C;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9C;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAEhC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAEvB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;oBAC3D,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAEtE,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBACzD,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;wBAC3D,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;qBACnC;yBAAM;wBACL,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qBAC7D;iBACF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAKO,qCAAqC,CAAC,cAA+B;;QAC3E,MAAM,oBAAoB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,oBAAoB,mCAAI,IAAI,CAAC;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;QACjH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QACxC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,oBAAoB,EAAE;YACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;SAC5C;aAAM;YACL,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC1C,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAC3B,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAE,IAAI,CAAC;gBACvE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC/E,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;iBAC1C;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,CACH,CAAC;SACH;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAEvB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnB,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;oBAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBACzD,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;wBAC3D,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;qBACnC;yBAAM;wBACL,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qBAC7D;iBACF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAEO,eAAe,CAAC,OAAwB,EAAE,QAAiB;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;gBACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,OAAwB;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;QAC5C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC;IACrE,CAAC;IAEO,QAAQ,CAAC,OAAwB,EAAE,KAAa;QAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,KAAK;aACzB,WAAW,EAAE;aACb,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC;YAEvD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;SAChE;IACH,CAAC;IAMD,4BAA4B,CAAC,OAAwB;;QACnD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAO,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAO,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;QACzD,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAE/B,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,oBAAoB,mCAAI,IAAI,CAAC;QAC9E,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxF,IAAI,oBAAoB,EAAE;YACxB,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAE/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oBAC/B,IAAI,EAAE,gBAAgB,CAAC,aAAa;oBACpC,OAAO,EAAE;wBACP,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;wBAClC,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxF,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;oBAC/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;wBAC/B,IAAI,EAAE,gBAAgB,CAAC,UAAU;wBACjC,OAAO,EAAE;4BACP,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,SAAS;4BACf,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;4BAClC,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;iBACJ;aACF;SACF;aAAM;YACL,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAC;YAC9E,IAAI,aAAa,EAAE;gBACjB,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC;gBAC3E,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;wBAC/B,IAAI,EAAE,gBAAgB,CAAC,UAAU;wBACjC,OAAO,EAAE;4BACP,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,SAAS;4BACf,MAAM,EAAE,aAAa;4BACrB,MAAM,EAAE,IAAI;4BACZ,wBAAwB,EAAE,IAAI;yBAC/B;qBACF,CAAC,CAAC;iBACJ;aACF;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;aAChD;SACF;IACH,CAAC;IAED,WAAW,CAAC,UAA2B,IAAI,CAAC,aAAa;;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,OAAO;SACR;QAED,MAAM,UAAU,GAAG,OAAO;aACvB,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC3B,OAAO,MAAM,CAAC,aAAa,CAAC;aAC7B;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;aAC3B,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpD,MAAM,oBAAoB,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,oBAAoB,mCAAI,IAAI,CAAC;QAE9E,IACE,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;YAC9F,CAAC,oBAAoB,EACrB;YACA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;gBAC/B,IAAI,EAAE,gBAAgB,CAAC,aAAa;gBACpC,OAAO,EAAE;oBACP,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,IAAI;oBACZ,wBAAwB,EAAE,CAAC,oBAAoB;iBAChD;aACF,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;gBAC/B,IAAI,EAAE,gBAAgB,CAAC,aAAa;gBACpC,OAAO,EAAE;oBACP,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,SAAS;iBAChB;aACF,CAAC,CAAC;SACJ;IACH,CAAC;IAED,WAAW,CAAC,OAAwB;QAClC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,SAAsB;;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAG/D,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE/D,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,wBAAwB,CAAC,WAAW,GAAG,CAAA,MAAA,YAAY,CAAC,WAAW,0CAAE,WAAW,KAAI,cAAc,CAAC;QACpG,WAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAErE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAGhE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEjE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,UAAU,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/E,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5E,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/C,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,MAAoB;;QAC/B,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,wBAAwB,CAAC,WAAW,GAAG,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,WAAW,KAAI,cAAc,CAAC;QAC9F,WAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/D,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC5D,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,mBAAmB,CAAC,KAAsB;;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE1C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,WAAW,GAA2B,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAE,MAAM,CAAC;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YACxC,OAAO;SACR;QACD,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAA4C,CAAC;QAC3F,MAAM,mBAAmB,GACvB,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;YACrC,CAAC,CAAC,MAAA,CAAC,GAAG,aAAa,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,MAAA,CAAC,GAAG,aAAa,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;;YAC5C,UAAU,IAAI,KAAK,CAAC;YACpB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAE/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;YAC3B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzF,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,WAAW,GAAG,KAAK,CAAC;aACrB;iBAAM;gBACL,UAAU,GAAG,KAAK,CAAC;aACpB;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACjD,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YAE/C,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,aAAa,EAAC,kBAAkB,mDAAG,GAAG,EAAE,cAAc,CAAC,KAAI,GAAG,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAyB;gBACpC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;gBACf,aAAa,EAAE,cAAc;gBAC7B,aAAa,EAAE,OAAO;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,SAAS;aACrB,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC;QAC5C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,oBAAoB,GAAG,CAAC,KAAoB,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;YAC3C,IAAI,MAAM,YAAY,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;gBAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,wBAAwB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;YAC3C,IAAI,MAAM,YAAY,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBACpE,IAAI,MAAM,KAAK,IAAI,CAAC,iBAAiB,EAAE;oBACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAChD;aACF;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7E,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACpF,CAAC;IAED,IAAI;;QAEF,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,MAAM,CAAC;QACtF,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAClE;aAAM;YACL,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChE;QAGD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,IAAI,CAAC;QACpF,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE;YAC/E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACvD;QAGD,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,EAAE,CAAC;SAC1C;QAGD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAClD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACjD,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACjF;YACD,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;aACtF;SACF;QACD,IAAI,CAAC,oBAAoB,GAAG,SAAgB,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,SAAgB,CAAC;QAEjD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACrD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC7C;iBAAM;gBAEL,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;aAClC;SACF;QAGD,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAC;SAC1C;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,EAAE,CAAC;SAC1C;QAGD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAGhE,IAAI,CAAC,kBAA0B,GAAG,SAAS,CAAC;QAC5C,IAAI,CAAC,wBAAgC,GAAG,SAAS,CAAC;QAClD,IAAI,CAAC,iBAAyB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,cAAsB,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,oBAA4B,GAAG,SAAS,CAAC;IACjD,CAAC;CACF","file":"value-filter.js","sourcesContent":["import type { ListTable, PivotTable } from '@visactor/vtable';\nimport { arrayEqual, isValid } from '@visactor/vutils';\nimport type { ValueFilterOptionDom, FilterState, FilterOptions, FilterStyles } from './types';\nimport { FilterActionType } from './types';\nimport type { FilterStateManager } from './filter-state-manager';\nimport { applyStyles } from './styles';\n\nexport class ValueFilter {\n private table: ListTable | PivotTable;\n private filterStateManager: FilterStateManager;\n private pluginOptions: FilterOptions;\n private styles: Record<any, any>;\n private selectedField: string | number;\n private selectedKeys = new Map<string | number, Set<string | number>>(); // 存储 format 之前的原始数据\n private candidateKeys = new Map<string | number, Map<string | number, number>>(); // 存储 format 后的数据\n private formatFnCache = new Map<string | number, (record: any) => string | number>();\n private toUnformattedCache = new Map<string | number, Map<any, Set<any>>>();\n\n private valueFilterOptionList: Map<string | number, ValueFilterOptionDom[]> = new Map();\n\n private filterByValuePanel: HTMLElement;\n private searchContainer: HTMLElement;\n private optionsContainer: HTMLElement;\n private selectAllItemDiv: HTMLElement;\n private selectAllLabel: HTMLElement;\n private filterByValueSearchInput: HTMLInputElement;\n private selectAllCheckbox: HTMLInputElement;\n private totalCountSpan: HTMLSpanElement;\n private filterItemsContainer: HTMLElement;\n\n private _onInputKeyUpHandler: (event: KeyboardEvent) => void;\n private _onCheckboxChangeHandler: (event: Event) => void;\n\n constructor(table: ListTable | PivotTable, filterStateManager: FilterStateManager, pluginOptions: FilterOptions) {\n this.table = table;\n this.filterStateManager = filterStateManager;\n this.pluginOptions = pluginOptions;\n this.styles = pluginOptions.styles || {};\n }\n\n setSelectedField(fieldId: string | number): void {\n this.selectedField = fieldId;\n }\n\n private getFormatFnCache(fieldId: string | number) {\n let formatFn = this.formatFnCache.get(fieldId);\n if (formatFn !== null && formatFn !== undefined) {\n return formatFn;\n }\n\n const headerAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(String(fieldId));\n const bodyInfo = this.table.internalProps.layoutMap.getBody(headerAddress?.col, headerAddress?.row);\n if (bodyInfo && 'fieldFormat' in bodyInfo && typeof bodyInfo.fieldFormat === 'function') {\n formatFn = bodyInfo.fieldFormat;\n } else if (bodyInfo && 'format' in bodyInfo && typeof bodyInfo.format === 'function') {\n formatFn = bodyInfo.format;\n } else {\n formatFn = (record: any) => record[fieldId];\n }\n\n this.formatFnCache.set(fieldId, formatFn);\n return formatFn;\n }\n\n private getRecords(table: ListTable | PivotTable, original: boolean): any[] {\n if (original === true) {\n return table.internalProps.records;\n }\n\n const records = [];\n const stack = [...table.internalProps.dataSource.records];\n while (stack.length > 0) {\n const item = stack.pop();\n\n if (item.vtableMerge && Array.isArray(item.children)) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n stack.push(item.children[i]);\n }\n } else {\n records.push(item);\n }\n }\n\n return records.reverse();\n }\n\n /**\n * 为未应用筛选的列,收集候选值集合\n */\n private collectCandidateKeysForUnfilteredColumn(fieldId: string | number): void {\n const syncFilterItemsState = this.pluginOptions?.syncFilterItemsState ?? true;\n const countMap = new Map<any, number>(); // 计算每个候选值的计数\n let records = [];\n // 如果各个筛选器之间不联动, 则永远从原数据中获取候选值\n if (!syncFilterItemsState) {\n records = this.table.internalProps.records;\n } else {\n records = this.getRecords(this.table, false); // 未筛选:使用当前表格数据\n }\n\n const formatFn = this.getFormatFnCache(fieldId);\n const toUnformatted = new Map();\n\n records.forEach(record => {\n // 空行不做处理\n if (isValid(record)) {\n const originalValue = record[fieldId];\n const formattedValue = formatFn(record);\n if (formattedValue !== undefined && formattedValue !== null) {\n countMap.set(formattedValue, (countMap.get(formattedValue) || 0) + 1);\n\n const unformattedSet = toUnformatted.get(formattedValue);\n if (unformattedSet !== undefined && unformattedSet !== null) {\n unformattedSet.add(originalValue);\n } else {\n toUnformatted.set(formattedValue, new Set([originalValue]));\n }\n }\n }\n });\n\n this.candidateKeys.set(fieldId, countMap);\n this.toUnformattedCache.set(fieldId, toUnformatted);\n }\n\n /**\n * 为已应用筛选的列,收集候选值集合\n */\n private collectCandidateKeysForFilteredColumn(candidateField: string | number): void {\n const syncFilterItemsState = this.pluginOptions?.syncFilterItemsState ?? true;\n const filteredFields = this.filterStateManager.getActiveFilterFields().filter(field => field !== candidateField);\n const toUnformatted = new Map();\n const formatFn = this.getFormatFnCache(candidateField);\n\n const countMap = new Map<any, number>(); // 计算每个候选值的计数\n let records = [];\n // 如果各个筛选器之间不联动, 则永远从原数据中获取候选值\n if (!syncFilterItemsState) {\n records = this.table.internalProps.records;\n } else {\n const recordsList = this.getRecords(this.table, true); // 已筛选:使用原始表格数据\n const records = recordsList.filter(record =>\n filteredFields.every(field => {\n const filterType = this.filterStateManager.getFilterState(field)?.type;\n if (filterType !== 'byValue' && filterType !== null && filterType !== undefined) {\n this.syncSingleStateFromTableData(field);\n }\n const set = this.selectedKeys.get(field);\n return set.has(record[field]);\n })\n );\n }\n\n records.forEach(record => {\n // 空行不做处理\n if (isValid(record)) {\n const originalValue = record[candidateField];\n const formattedValue = formatFn(record);\n countMap.set(formattedValue, (countMap.get(formattedValue) || 0) + 1);\n if (formattedValue !== undefined && formattedValue !== null) {\n const unformattedSet = toUnformatted.get(formattedValue);\n if (unformattedSet !== undefined && unformattedSet !== null) {\n unformattedSet.add(originalValue);\n } else {\n toUnformatted.set(formattedValue, new Set([originalValue]));\n }\n }\n }\n });\n\n this.candidateKeys.set(candidateField, countMap);\n this.toUnformattedCache.set(candidateField, toUnformatted);\n }\n\n private toggleSelectAll(fieldId: string | number, selected: boolean): void {\n const options = this.valueFilterOptionList.get(fieldId);\n options.forEach(option => {\n if (option.itemContainer.style.display !== 'none') {\n option.checkbox.checked = selected;\n }\n });\n }\n\n private syncSelectAllCheckbox(fieldId: string | number): void {\n const options = this.valueFilterOptionList.get(fieldId) || [];\n const allChecked = options.every(o => o.checkbox.checked);\n const noneChecked = options.every(o => !o.checkbox.checked);\n\n this.selectAllCheckbox.checked = allChecked;\n this.selectAllCheckbox.indeterminate = !allChecked && !noneChecked;\n }\n\n private onSearch(fieldId: string | number, value: string): void {\n // 更新UI显示\n const items = this.valueFilterOptionList.get(fieldId);\n const filterKeywords = value\n .toUpperCase()\n .split(' ')\n .filter(s => s);\n\n for (const item of items) {\n const txtValue = item.id.toUpperCase() || '';\n const match = filterKeywords.some(keyword => txtValue.includes(keyword));\n const isVisible = filterKeywords.length === 0 || match;\n\n item.itemContainer.style.display = isVisible ? 'flex' : 'none';\n }\n }\n\n /**\n * 根据当前表格中的数据,更新 filter 的被选状态\n * 适用情况:表格数据发生变化,或者需要自动检测当前表格的数据情况\n */\n syncSingleStateFromTableData(fieldId: string | number): void {\n const selectedValues = new Set<any>();\n const originalValues = new Set<any>();\n const originalRecords = this.table.internalProps.records; // 原始数据\n originalRecords.forEach(record => {\n // 空行不做处理\n if (isValid(record)) {\n originalValues.add(record[fieldId]);\n }\n });\n\n const syncFilterItemsState = this.pluginOptions?.syncFilterItemsState ?? true;\n const hasFiltered = !arrayEqual(Array.from(originalValues), Array.from(selectedValues));\n if (syncFilterItemsState) {\n if (hasFiltered) {\n this.selectedKeys.set(fieldId, selectedValues);\n\n this.filterStateManager.dispatch({\n type: FilterActionType.UPDATE_FILTER,\n payload: {\n field: fieldId,\n values: Array.from(selectedValues),\n enable: true\n }\n });\n const hasFiltered = !arrayEqual(Array.from(originalValues), Array.from(selectedValues));\n if (hasFiltered) {\n this.selectedKeys.set(fieldId, selectedValues);\n this.filterStateManager.dispatch({\n type: FilterActionType.ADD_FILTER,\n payload: {\n field: fieldId,\n type: 'byValue',\n values: Array.from(selectedValues),\n enable: true\n }\n });\n }\n }\n } else {\n const selectedRules = this.filterStateManager.getFilterState(fieldId)?.values; // 如果按值筛选没有状态, 则默认选中所有值\n if (selectedRules) {\n const hasFiltered = !arrayEqual(Array.from(originalValues), selectedRules);\n if (hasFiltered) {\n this.selectedKeys.set(fieldId, new Set(selectedRules));\n this.filterStateManager.dispatch({\n type: FilterActionType.ADD_FILTER,\n payload: {\n field: fieldId,\n type: 'byValue',\n values: selectedRules,\n enable: true,\n shouldKeepUnrelatedState: true\n }\n });\n }\n } else {\n this.selectedKeys.set(fieldId, originalValues);\n }\n }\n }\n\n applyFilter(fieldId: string | number = this.selectedField): void {\n const options = this.valueFilterOptionList.get(fieldId);\n if (!options || options.length === 0) {\n return;\n }\n\n const selections = options\n .map(option => {\n if (option.checkbox.checked) {\n return option.originalValue;\n }\n return null;\n })\n .filter(key => key !== null)\n .flat();\n\n this.selectedKeys.set(fieldId, new Set(selections));\n\n const syncFilterItemsState = this.pluginOptions?.syncFilterItemsState ?? true;\n\n if (\n (selections.length >= 0 && selections.length < this.valueFilterOptionList.get(fieldId).length) ||\n !syncFilterItemsState\n ) {\n this.filterStateManager.dispatch({\n type: FilterActionType.APPLY_FILTERS,\n payload: {\n field: fieldId,\n type: 'byValue',\n values: selections,\n enable: true,\n shouldKeepUnrelatedState: !syncFilterItemsState\n }\n });\n } else {\n this.filterStateManager.dispatch({\n type: FilterActionType.REMOVE_FILTER,\n payload: {\n field: fieldId,\n type: 'byValue'\n }\n });\n }\n }\n\n clearFilter(fieldId: string | number): void {\n this.filterStateManager.dispatch({\n type: FilterActionType.REMOVE_FILTER,\n payload: {\n field: fieldId\n }\n });\n\n this.hide();\n }\n\n render(container: HTMLElement): void {\n const filterStyles = this.styles;\n // === 按值筛选的菜单内容 ===\n this.filterByValuePanel = document.createElement('div');\n applyStyles(this.filterByValuePanel, filterStyles.filterPanel);\n\n // -- 搜索栏 ---\n this.searchContainer = document.createElement('div');\n applyStyles(this.searchContainer, this.styles.searchContainer);\n\n this.filterByValueSearchInput = document.createElement('input');\n this.filterByValueSearchInput.type = 'text';\n this.filterByValueSearchInput.placeholder = filterStyles.searchInput?.placeholder || '可使用空格分隔多个关键词';\n applyStyles(this.filterByValueSearchInput, filterStyles.searchInput);\n\n this.searchContainer.appendChild(this.filterByValueSearchInput);\n\n // --- 筛选选项 ---\n this.optionsContainer = document.createElement('div');\n applyStyles(this.optionsContainer, this.styles.optionsContainer);\n\n this.selectAllItemDiv = document.createElement('div');\n applyStyles(this.selectAllItemDiv, this.styles.optionItem);\n\n this.selectAllLabel = document.createElement('label');\n applyStyles(this.selectAllLabel, this.styles.optionLabel);\n\n this.selectAllCheckbox = document.createElement('input');\n this.selectAllCheckbox.type = 'checkbox';\n this.selectAllCheckbox.checked = true; // 默认全选\n applyStyles(this.selectAllCheckbox, filterStyles.checkbox);\n\n this.totalCountSpan = document.createElement('span');\n this.totalCountSpan.textContent = '';\n applyStyles(this.totalCountSpan, filterStyles.countSpan);\n\n this.selectAllLabel.append(this.selectAllCheckbox, ' 全选');\n this.selectAllItemDiv.appendChild(this.selectAllLabel);\n\n this.filterItemsContainer = document.createElement('div'); // 筛选条目的容器,后续应动态 appendChild\n\n this.optionsContainer.append(this.selectAllItemDiv, this.filterItemsContainer);\n this.filterByValuePanel.append(this.searchContainer, this.optionsContainer);\n\n container.appendChild(this.filterByValuePanel);\n\n this.bindEventForFilterByValue();\n }\n\n updateStyles(styles: FilterStyles): void {\n applyStyles(this.filterByValuePanel, styles.filterPanel);\n applyStyles(this.searchContainer, styles.searchContainer);\n this.filterByValueSearchInput.placeholder = styles.searchInput?.placeholder || '可使用空格分隔多个关键词';\n applyStyles(this.filterByValueSearchInput, styles.searchInput);\n applyStyles(this.optionsContainer, styles.optionsContainer);\n applyStyles(this.selectAllItemDiv, styles.optionItem);\n applyStyles(this.selectAllLabel, styles.optionLabel);\n applyStyles(this.selectAllCheckbox, styles.checkbox);\n }\n\n private renderFilterOptions(field: string | number): void {\n const filterStyles = this.styles;\n this.filterItemsContainer.innerHTML = '';\n this.valueFilterOptionList.delete(field);\n this.valueFilterOptionList.set(field, []);\n\n let totalCount = 0;\n let allChecked = true;\n let noneChecked = true;\n const selectedKeysSet = this.selectedKeys.get(field);\n const itemDomList: ValueFilterOptionDom[] = [];\n const isFiltered = this.filterStateManager.getFilterState(field)?.enable;\n const toUnformatted = this.toUnformattedCache.get(field);\n\n const candidates = this.candidateKeys.get(field);\n if (!candidates || candidates.size === 0) {\n return;\n }\n const candidatesArr = [...candidates.entries()] as [string, number][] | [number, number][];\n const sortedCandidatesArr =\n typeof candidatesArr[0][0] === 'number'\n ? [...candidatesArr]?.sort(([a], [b]) => Number(a) - Number(b))\n : [...candidatesArr]?.sort(([a], [b]) => String(a).localeCompare(String(b)));\n\n sortedCandidatesArr?.forEach(([val, count]) => {\n totalCount += count;\n const unformattedArr = Array.from(toUnformatted.get(val) || new Set());\n const itemDiv = document.createElement('div');\n applyStyles(itemDiv, filterStyles.optionItem);\n itemDiv.style.display = 'flex';\n\n const label = document.createElement('label');\n applyStyles(label, filterStyles.optionLabel);\n\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.value = String(val); // 显示值作为checkbox的value\n checkbox.checked = isFiltered ? unformattedArr.some(v => selectedKeysSet?.has(v)) : true;\n applyStyles(checkbox, filterStyles.checkbox);\n\n if (checkbox.checked) {\n noneChecked = false;\n } else {\n allChecked = false;\n }\n\n const countSpan = document.createElement('span');\n countSpan.textContent = String(count);\n applyStyles(countSpan, filterStyles.countSpan);\n\n label.append(checkbox, ` ${this.pluginOptions.checkboxItemFormat?.(val, unformattedArr) || val}`); // UI显示格式化值 或 用户二次加工的值\n itemDiv.append(label, countSpan);\n this.filterItemsContainer.appendChild(itemDiv);\n\n const itemDom: ValueFilterOptionDom = {\n id: String(val), // 显示值作为id,用于UI交互\n originalValue: unformattedArr,\n itemContainer: itemDiv,\n checkbox: checkbox,\n countSpan: countSpan\n };\n\n itemDomList.push(itemDom);\n });\n\n this.valueFilterOptionList.set(field, itemDomList);\n this.selectAllCheckbox.checked = allChecked;\n this.selectAllCheckbox.indeterminate = !allChecked && !noneChecked;\n this.totalCountSpan.textContent = String(totalCount);\n }\n\n private bindEventForFilterByValue(): void {\n this._onInputKeyUpHandler = (event: KeyboardEvent) => {\n const target = event.target as EventTarget;\n if (target instanceof HTMLInputElement && target.type === 'text') {\n const value = target.value;\n this.onSearch(this.selectedField, value);\n }\n };\n\n this._onCheckboxChangeHandler = (event: Event) => {\n const target = event.target as EventTarget;\n if (target instanceof HTMLInputElement && target.type === 'checkbox') {\n if (target === this.selectAllCheckbox) {\n this.toggleSelectAll(this.selectedField, this.selectAllCheckbox.checked);\n } else {\n this.syncSelectAllCheckbox(this.selectedField);\n }\n }\n };\n\n this.filterByValuePanel.addEventListener('keyup', this._onInputKeyUpHandler);\n this.filterByValuePanel.addEventListener('change', this._onCheckboxChangeHandler);\n }\n\n show(): void {\n // 1. 收集候选值列表(根据筛选状态选择数据源)\n const isFiltered = this.filterStateManager.getFilterState(this.selectedField)?.enable;\n if (!isFiltered) {\n this.collectCandidateKeysForUnfilteredColumn(this.selectedField);\n } else {\n this.collectCandidateKeysForFilteredColumn(this.selectedField);\n }\n\n // 2. 初始筛选状态\n const filterType = this.filterStateManager.getFilterState(this.selectedField)?.type;\n if (filterType !== null && filterType !== undefined && filterType !== 'byValue') {\n this.syncSingleStateFromTableData(this.selectedField);\n }\n\n // 3. 清空搜索框\n if (this.filterByValueSearchInput) {\n this.filterByValueSearchInput.value = '';\n }\n\n // 4. 渲染选项(此时状态已经初始化完成)\n this.renderFilterOptions(this.selectedField);\n this.filterByValuePanel.style.display = 'block';\n }\n\n hide(): void {\n this.filterByValuePanel.style.display = 'none';\n }\n\n clearSearchInputValue(): void {\n this.filterByValueSearchInput.value = '';\n }\n\n destroy(): void {\n if (this.filterByValuePanel) {\n if (this._onInputKeyUpHandler) {\n this.filterByValuePanel.removeEventListener('keyup', this._onInputKeyUpHandler);\n }\n if (this._onCheckboxChangeHandler) {\n this.filterByValuePanel.removeEventListener('change', this._onCheckboxChangeHandler);\n }\n }\n this._onInputKeyUpHandler = undefined as any;\n this._onCheckboxChangeHandler = undefined as any;\n\n if (this.filterByValuePanel) {\n const parent = this.filterByValuePanel.parentElement;\n if (parent) {\n parent.removeChild(this.filterByValuePanel);\n } else {\n // if not attached, ensure it's removed\n this.filterByValuePanel.remove();\n }\n }\n\n // clear DOM contents to release child references\n if (this.filterItemsContainer) {\n this.filterItemsContainer.innerHTML = '';\n }\n if (this.filterByValueSearchInput) {\n this.filterByValueSearchInput.value = '';\n }\n\n // Clear in-memory caches and collections to avoid unbounded growth\n this.selectedKeys && this.selectedKeys.clear();\n this.candidateKeys && this.candidateKeys.clear();\n this.formatFnCache && this.formatFnCache.clear();\n this.toUnformattedCache && this.toUnformattedCache.clear();\n this.valueFilterOptionList && this.valueFilterOptionList.clear();\n\n // Nullify references (use casts to avoid TS strict errors at assignment)\n (this.filterByValuePanel as any) = undefined;\n (this.filterByValueSearchInput as any) = undefined;\n (this.selectAllCheckbox as any) = undefined;\n (this.totalCountSpan as any) = undefined;\n (this.filterItemsContainer as any) = undefined;\n }\n}\n"]}
@@ -89,7 +89,7 @@ export class FocusHighlightPlugin {
89
89
  }));
90
90
  }
91
91
  update() {
92
- this.setFocusHighlightRange(this.range, !0);
92
+ this.table && this.setFocusHighlightRange(this.range, !0);
93
93
  }
94
94
  }
95
95
  //# sourceMappingURL=focus-highlight.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/focus-highlight.ts"],"names":[],"mappings":"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","file":"focus-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellAddress, CellRange } from '@visactor/vtable/es/ts-types';\nimport type { pluginsDefinition } from '@visactor/vtable';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nexport interface FocusHighlightPluginOptions {\n id?: string;\n fill?: string;\n opacity?: number;\n highlightRange?: CellAddress | CellRange; //初始化聚焦高亮范围\n}\n\nexport class FocusHighlightPlugin implements pluginsDefinition.IVTablePlugin {\n id = `focus-highlight`;\n name = 'Focus Highlight';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.SELECTED_CELL, TABLE_EVENT_TYPE.SELECTED_CLEAR];\n table: BaseTableAPI;\n range?: CellRange;\n pluginOptions: FocusHighlightPluginOptions;\n\n constructor(\n options: FocusHighlightPluginOptions = {\n fill: '#000',\n opacity: 0.5,\n highlightRange: undefined\n }\n ) {\n this.id = options.id ?? this.id;\n this.pluginOptions = Object.assign(\n {\n fill: '#000',\n opacity: 0.5\n },\n options\n );\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n if (args[1] === TABLE_EVENT_TYPE.INITIALIZED) {\n this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange);\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CELL) {\n const posCell = this.table.stateManager.select.cellPos;\n if (this.table.isHeader(posCell.col, posCell.row)) {\n this.setFocusHighlightRange(undefined);\n } else {\n const ranges = this.table.stateManager.select.ranges;\n const min_col = 0;\n const max_col = this.table.colCount - 1;\n const min_row = Math.min(ranges[0].start.row, ranges[0].end.row);\n const max_row = Math.max(ranges[0].start.row, ranges[0].end.row);\n this.setFocusHighlightRange({\n start: { col: min_col, row: min_row },\n end: { col: max_col, row: max_row }\n });\n }\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.setFocusHighlightRange(undefined);\n }\n }\n\n setFocusHighlightRange(range?: CellAddress | CellRange, forceUpdate: boolean = false) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range as CellRange;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n if (isSameRange(this.range, cellRange) && !forceUpdate) {\n return;\n }\n\n this.range = cellRange;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!cellRange) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(cellRange, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this.pluginOptions.fill,\n opacity: this.pluginOptions.opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n update() {\n this.setFocusHighlightRange(this.range, true);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/focus-highlight.ts"],"names":[],"mappings":"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","file":"focus-highlight.js","sourcesContent":["import type { INode } from '@visactor/vtable/es/vrender';\nimport { createRect } from '@visactor/vtable/es/vrender';\nimport type { Group } from '@visactor/vtable/es/scenegraph/graphic/group';\nimport { isSameRange } from '@visactor/vtable/es/tools/cell-range';\nimport type { CellAddress, CellRange } from '@visactor/vtable/es/ts-types';\nimport type { pluginsDefinition } from '@visactor/vtable';\nimport type { BaseTableAPI } from '@visactor/vtable/es/ts-types/base-table';\nimport { cellInRange } from '@visactor/vtable/es/tools/helper';\nimport { TABLE_EVENT_TYPE } from '@visactor/vtable';\nexport interface FocusHighlightPluginOptions {\n id?: string;\n fill?: string;\n opacity?: number;\n highlightRange?: CellAddress | CellRange; //初始化聚焦高亮范围\n}\n\nexport class FocusHighlightPlugin implements pluginsDefinition.IVTablePlugin {\n id = `focus-highlight`;\n name = 'Focus Highlight';\n runTime = [TABLE_EVENT_TYPE.INITIALIZED, TABLE_EVENT_TYPE.SELECTED_CELL, TABLE_EVENT_TYPE.SELECTED_CLEAR];\n table: BaseTableAPI;\n range?: CellRange;\n pluginOptions: FocusHighlightPluginOptions;\n\n constructor(\n options: FocusHighlightPluginOptions = {\n fill: '#000',\n opacity: 0.5,\n highlightRange: undefined\n }\n ) {\n this.id = options.id ?? this.id;\n this.pluginOptions = Object.assign(\n {\n fill: '#000',\n opacity: 0.5\n },\n options\n );\n }\n run(...args: any[]) {\n if (!this.table) {\n this.table = args[2] as BaseTableAPI;\n }\n if (args[1] === TABLE_EVENT_TYPE.INITIALIZED) {\n this.pluginOptions.highlightRange && this.setFocusHighlightRange(this.pluginOptions.highlightRange);\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CELL) {\n const posCell = this.table.stateManager.select.cellPos;\n if (this.table.isHeader(posCell.col, posCell.row)) {\n this.setFocusHighlightRange(undefined);\n } else {\n const ranges = this.table.stateManager.select.ranges;\n const min_col = 0;\n const max_col = this.table.colCount - 1;\n const min_row = Math.min(ranges[0].start.row, ranges[0].end.row);\n const max_row = Math.max(ranges[0].start.row, ranges[0].end.row);\n this.setFocusHighlightRange({\n start: { col: min_col, row: min_row },\n end: { col: max_col, row: max_row }\n });\n }\n } else if (args[1] === TABLE_EVENT_TYPE.SELECTED_CLEAR) {\n this.setFocusHighlightRange(undefined);\n }\n }\n\n setFocusHighlightRange(range?: CellAddress | CellRange, forceUpdate: boolean = false) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range as CellRange;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n if (isSameRange(this.range, cellRange) && !forceUpdate) {\n return;\n }\n\n this.range = cellRange;\n if (!range) {\n // reset highlight\n this.deleteAllCellGroupShadow();\n } else {\n // update highlight\n this.updateCellGroupShadow();\n }\n\n this.table.scenegraph.updateNextFrame();\n }\n\n deleteAllCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup);\n }\n\n updateCellGroupShadow() {\n if (!this.table.isPivotTable()) {\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rowHeaderGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.leftBottomCornerGroup, this.range);\n }\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bodyGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightFrozenGroup, this.range);\n this.updateCellGroupShadowInContainer(this.table.scenegraph.bottomFrozenGroup), this.range;\n this.updateCellGroupShadowInContainer(this.table.scenegraph.rightBottomCornerGroup, this.range);\n }\n updateCellGroupShadowInContainer(container: Group, range?: CellAddress | CellRange) {\n let cellRange: CellRange;\n if (range && 'start' in range && 'end' in range) {\n cellRange = range;\n } else if (range) {\n cellRange = {\n start: range as CellAddress,\n end: range as CellAddress\n };\n }\n container.forEachChildrenSkipChild((item: INode) => {\n const column = item as unknown as Group;\n if (column.role === 'column') {\n column.forEachChildrenSkipChild((item: INode) => {\n const cell = item as unknown as Group;\n if (cell.role !== 'cell') {\n return;\n }\n cell.attachShadow(cell.shadowRoot);\n const shadowGroup = cell.shadowRoot;\n if (!cellRange) {\n // no highlight\n shadowGroup.removeAllChild();\n } else if (cellInRange(cellRange, cell.col, cell.row)) {\n // inside highlight\n shadowGroup.removeAllChild();\n } else if (!shadowGroup.firstChild) {\n // outside highlight\n const shadowRect = createRect({\n x: 0,\n y: 0,\n width: cell.attribute.width,\n height: cell.attribute.height,\n fill: this.pluginOptions.fill,\n opacity: this.pluginOptions.opacity\n });\n shadowRect.name = 'shadow-rect';\n shadowGroup.appendChild(shadowRect);\n }\n });\n }\n });\n }\n update() {\n if (this.table) {\n this.setFocusHighlightRange(this.range, true);\n }\n }\n}\n"]}
@@ -90,5 +90,4 @@ function updateAllSubTableCheckboxes(subTable, field, checked) {
90
90
  subTable.scenegraph.updateHeaderCheckboxCellState(checkboxCol, 0, checked);
91
91
  for (let row = subTable.columnHeaderLevelCount; row < subTable.rowCount; row++) setCellCheckboxStateByAttribute(checkboxCol, row, checked, subTable);
92
92
  }
93
- }
94
- //# sourceMappingURL=checkbox.js.map
93
+ }
@@ -123,4 +123,5 @@ export class ConfigManager {
123
123
  release() {
124
124
  this.isRowExpanded = () => !1, this.table = null, this.pluginOptions = null;
125
125
  }
126
- }
126
+ }
127
+ //# sourceMappingURL=config.js.map
@@ -49,4 +49,4 @@ export function setCellCheckboxStateByAttribute(col, row, checked, table) {
49
49
  }));
50
50
  }));
51
51
  }
52
- //# sourceMappingURL=utils.js.map
52
+ //# sourceMappingURL=utils.js.map
@@ -290,6 +290,7 @@ export class TableSeriesNumber {
290
290
  this.seriesNumberComponent = null);
291
291
  }
292
292
  syncRowHeightToComponent() {
293
+ if (!this.table.getBodyVisibleRowRange()) return;
293
294
  const {rowStart: rowStart, rowEnd: rowEnd} = this.table.getBodyVisibleRowRange(), adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount), adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);
294
295
  this.table.frozenRowCount !== this.seriesNumberComponent.getAttributes().frozenRowCount && this.seriesNumberComponent.setAttributes({
295
296
  frozenRowCount: this.table.frozenRowCount
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/table-series-number.ts"],"names":[],"mappings":"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","file":"table-series-number.js","sourcesContent":["import type { BaseTableAPI, ListTable, ListTableConstructorOptions, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE, TYPES } from '@visactor/vtable';\nimport { TableSeriesNumber as VRenderTableSeriesNumber, SeriesNumberEvent } from '@visactor/vtable/es/vrender';\nimport type { ILayer, TableSeriesNumberAttributes } from '@visactor/vtable/es/vrender';\n\nexport type TableSeriesNumberOptions = {\n rowCount: number;\n colCount: number;\n dragOrder?: {\n enableDragColumnOrder?: boolean;\n enableDragRowOrder?: boolean;\n };\n // syncRowHeightFromTable?: boolean;\n // syncColWidthFromTable?: boolean;\n} & Partial<\n Pick<\n TableSeriesNumberAttributes,\n | 'rowSeriesNumberGenerate'\n | 'colSeriesNumberGenerate'\n | 'rowSeriesNumberCellStyle'\n | 'colSeriesNumberCellStyle'\n | 'cornerCellStyle'\n | 'colSeriesNumberHeight'\n | 'rowSeriesNumberWidth'\n >\n>;\nexport class TableSeriesNumber implements pluginsDefinition.IVTablePlugin {\n id = `table-series-number`;\n name = 'Table Series Number';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.BEFORE_INIT,\n TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION,\n TABLE_EVENT_TYPE.UPDATED\n ];\n pluginOptions: TableSeriesNumberOptions;\n table: ListTable;\n seriesNumberComponent: VRenderTableSeriesNumber;\n componentLayoutLayer: ILayer;\n lastCurrentRow: number = 0;\n lastCurrentCol: number = 0;\n startRowIndex: number = 0;\n scrollTimer: any;\n constructor(pluginOptions: TableSeriesNumberOptions) {\n this.pluginOptions = pluginOptions;\n this.seriesNumberComponent = new VRenderTableSeriesNumber({\n rowCount: pluginOptions.rowCount,\n colCount: pluginOptions.colCount,\n rowSeriesNumberWidth: pluginOptions.rowSeriesNumberWidth,\n colSeriesNumberHeight: pluginOptions.colSeriesNumberHeight,\n rowSeriesNumberGenerate: pluginOptions.rowSeriesNumberGenerate,\n colSeriesNumberGenerate: pluginOptions.colSeriesNumberGenerate,\n rowSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.rowSeriesNumberCellStyle\n ),\n colSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.colSeriesNumberCellStyle\n ),\n cornerCellStyle: Object.assign(\n {\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#98C8A5',\n opacity: 0.7\n },\n select: {\n fill: '#98C8A5',\n opacity: 1\n }\n }\n },\n pluginOptions.cornerCellStyle\n ),\n checkMoveColumnOrder: (colIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragColumnOrder ? this.table.isColumnSelected(colIndex) : false;\n },\n checkMoveRowOrder: (rowIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragRowOrder ? this.table.isRowSelected(rowIndex) : false;\n }\n });\n this.listenComponentEvents();\n }\n\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.BEFORE_INIT || runTime === TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION) {\n const eventArgs = args[0];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n const options: ListTableConstructorOptions = eventArgs.options;\n const records = options.records ?? [];\n // //用空数据将records填充到pluginOptions.rowCount\n // for (let i = records.length; i < this.pluginOptions.rowCount; i++) {\n // records.push({});\n // }\n // 直接设置数组长度,不填充任何内容\n if (records.length < this.pluginOptions.rowCount) {\n records.length = this.pluginOptions.rowCount;\n }\n options.records = records;\n if (!options.columns) {\n options.columns = [];\n }\n for (let i = options.columns.length; i < this.pluginOptions.colCount; i++) {\n const columnFields = {\n field: i,\n key: i,\n title: ``\n };\n options.columns.push(columnFields);\n }\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n options.contentOffsetX = rowSeriesNumberColWidth;\n options.contentOffsetY = colSeriesNumberRowHeight;\n // if (options.columns.length < this.pluginOptions.colCount) {\n // options.columns.length = this.pluginOptions.colCount;\n // }\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED || runTime === TABLE_EVENT_TYPE.UPDATED) {\n this.table = args[2];\n if (!this.table.options.customConfig) {\n this.table.options.customConfig = {};\n }\n this.table.options.customConfig.cancelSelectCellHook = (e: any) => {\n const target = e.target;\n if (target.isDescendantsOf(this.seriesNumberComponent)) {\n return false;\n }\n return true;\n };\n\n // const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n // const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n // // this.table.scenegraph.stage.defaultLayer.setAttributes({\n // // x: rowSeriesNumberColWidth,\n // // y: colSeriesNumberRowHeight,\n // // width: 1700,\n // // height: 500,\n // // clip: true\n // // });\n // this.table.setTranslate(colSeriesNumberRowHeight, rowSeriesNumberColWidth);\n this.seriesNumberComponent.setAttributes({\n rowCount: this.table.rowCount,\n colCount: this.table.colCount,\n frozenRowCount: this.table.frozenRowCount,\n frozenColCount: this.table.frozenColCount,\n rightFrozenColCount: this.table.rightFrozenColCount,\n bottomFrozenRowCount: this.table.bottomFrozenRowCount\n });\n // add到layer上时会触发组件的render方法\n const newLayer = this.table.scenegraph.stage.createLayer();\n newLayer.appendChild(this.seriesNumberComponent);\n newLayer.setAttributes({ pickable: false });\n this.componentLayoutLayer = newLayer;\n\n // if (this.pluginOptions.syncRowHeightFromTable) {\n this.syncRowHeightToComponent();\n // }\n // if (this.pluginOptions.syncColWidthFromTable) {\n this.syncColWidthToComponent();\n // }\n\n this.listenTableEvents();\n }\n }\n private handleScroll = () => {\n //节流处理,避免滚动时频繁触发\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n this.scrollTimer = setTimeout(() => {\n this.scrollTimer = null;\n this.syncScrollToComponent();\n }, 10); // 优化: 由5ms改为10ms,减少频繁触发\n };\n\n private handleAfterSort = () => {\n this.syncScrollToComponent();\n };\n\n private handleSelectedChanged = (e: any) => {\n this.seriesNumberComponent.removeAllSelectedIndexs();\n const selectRange = this.table.stateManager.select.ranges;\n\n const rowSelectedIndexs = [];\n const colSelectedIndexs = [];\n for (const range of selectRange) {\n const { row: rowStart, col: colStart } = range.start;\n const { row: rowEnd, col: colEnd } = range.end;\n rowSelectedIndexs.push({ startIndex: Math.min(rowStart, rowEnd), endIndex: Math.max(rowStart, rowEnd) });\n colSelectedIndexs.push({ startIndex: Math.min(colStart, colEnd), endIndex: Math.max(colStart, colEnd) });\n }\n this.seriesNumberComponent.addRowSelectedRanges(rowSelectedIndexs);\n this.seriesNumberComponent.addColSelectedRanges(colSelectedIndexs);\n if (this.table.stateManager.select.isSelectAll) {\n this.seriesNumberComponent.addCornderSelected();\n }\n\n this.seriesNumberComponent.renderSelectedIndexsState();\n };\n\n private handleResizeColumnEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleResizeRowEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleChangeHeaderPosition = (e: any) => {\n // console.log('-----handleChangeHeaderPosition');\n this.syncColWidthToComponent();\n };\n\n listenTableEvents() {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.on(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n this.table.on(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, this.handleChangeHeaderPosition);\n }\n\n private handleSeriesNumberCellRightClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n const rowIndex = seriesNumberCell.id;\n //判断rowIndex整行是否被选中\n const isRowSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.row <= rowIndex &&\n rowIndex <= range.end.row &&\n range.start.col === 0 &&\n range.end.col === this.table.colCount - 1\n );\n });\n //当前右键的行号 没有整行被选中,则进行选中\n if (!isRowSelected) {\n this.table.selectCells([\n { start: { row: rowIndex, col: 0 }, end: { row: rowIndex, col: this.table.colCount - 1 } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n rowIndex: rowIndex\n }\n });\n } else if (isCol) {\n const colIndex = seriesNumberCell.id;\n //判断colIndex整列是否被选中\n const isColSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.col <= colIndex &&\n colIndex <= range.end.col &&\n range.start.row === 0 &&\n range.end.row === this.table.rowCount - 1\n );\n });\n //当前右键的列号 没有整列被选中,则进行选中\n if (!isColSelected) {\n this.table.selectCells([\n { start: { row: 0, col: colIndex }, end: { row: this.table.rowCount - 1, col: colIndex } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n colIndex: colIndex\n }\n });\n } else {\n //直接全选\n this.table.selectCells([\n { start: { row: 0, col: 0 }, end: { row: this.table.rowCount - 1, col: this.table.colCount - 1 } }\n ]);\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n isCorner: true\n }\n });\n }\n };\n\n private handleSeriesNumberCellHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellUnHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const ctrlMultiSelect = this.table.options.keyboardOptions?.ctrlMultiSelect ?? true;\n const shiftMultiSelect = (this.table.options.keyboardOptions as any)?.shiftMultiSelect ?? true;\n const enableCtrlSelectMode = (event.nativeEvent.ctrlKey || event.nativeEvent.metaKey) && ctrlMultiSelect;\n const enableShiftSelectMode = event.nativeEvent.shiftKey && shiftMultiSelect;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n this.table.stateManager.setSelectInline('row');\n const rowIndex = seriesNumberCell.id;\n\n if (isDragSelect) {\n this.table.dragSelectRow(rowIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectRow(rowIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else if (isCol) {\n this.table.stateManager.setSelectInline('col');\n const colIndex = seriesNumberCell.id;\n if (isDragSelect) {\n this.table.dragSelectCol(colIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectCol(colIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else {\n this.table.eventManager.deelTableSelectAll();\n }\n };\n\n private handleSeriesNumberCellClickUp = (e: any) => {\n this.table.stateManager.setSelectInline(false);\n this.table.endDragSelect();\n };\n\n private handleRowSeriesNumberWidthChange = (e: any) => {\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n this.table.setContentInsetXY(rowSeriesNumberColWidth, colSeriesNumberRowHeight);\n };\n\n private handleResizeColWidthStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeCol(colIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleResizeRowHeightStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeRow(rowIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleDragColumOrderStart = (e: any) => {\n // console.log('handleDragColumOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(colIndex, 0, event.viewport.x, event.viewport.y, event.nativeEvent, 'column');\n };\n private handleDragRowOrderStart = (e: any) => {\n // console.log('handleDragRowOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(0, rowIndex, event.viewport.x, event.viewport.y, event.nativeEvent, 'row');\n };\n\n listenComponentEvents() {\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellRightClick, this.handleSeriesNumberCellRightClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.on(SeriesNumberEvent.rowSeriesNumberWidthChange, this.handleRowSeriesNumberWidthChange);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n if (this.pluginOptions.dragOrder?.enableDragColumnOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragColumnOrderStart, this.handleDragColumOrderStart);\n }\n if (this.pluginOptions.dragOrder?.enableDragRowOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragRowOrderStart, this.handleDragRowOrderStart);\n }\n }\n release() {\n // 清除组件资源\n if (this.componentLayoutLayer) {\n this.table.scenegraph.stage.removeLayer(this.componentLayoutLayer._uid);\n this.componentLayoutLayer = null;\n }\n\n // 清除定时器\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n\n // 移除表格事件监听器\n if (this.table) {\n this.table.off(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.off(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.off(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n }\n // 移除组件事件监听器\n if (this.seriesNumberComponent) {\n this.seriesNumberComponent.off(\n SeriesNumberEvent.seriesNumberCellRightClick,\n this.handleSeriesNumberCellRightClick\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.off(\n SeriesNumberEvent.rowSeriesNumberWidthChange,\n this.handleRowSeriesNumberWidthChange\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n\n // 释放组件资源\n this.seriesNumberComponent.release?.();\n this.seriesNumberComponent = null;\n }\n }\n\n syncRowHeightToComponent() {\n // console.log('syncRowHeightToComponent adjust', adjustStartRowIndex, adjustEndRowIndex);\n const { rowStart, rowEnd } = this.table.getBodyVisibleRowRange();\n const adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount);\n const adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);\n //判断seriesNumberComponent的冻结行数是否变化\n if (this.table.frozenRowCount !== (this.seriesNumberComponent.getAttributes() as any).frozenRowCount) {\n this.seriesNumberComponent.setAttributes({ frozenRowCount: this.table.frozenRowCount } as any);\n }\n // 调用行序号重建接口\n this.seriesNumberComponent.recreateCellsToRowSeriesNumberGroup(adjustStartRowIndex, adjustEndRowIndex);\n // 更新冻结行序号单元格的y和height\n for (let i = 0; i < this.table.frozenRowCount; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n\n // 更新行序号单元格的y和height\n for (let i = adjustStartRowIndex; i <= adjustEndRowIndex; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n }\n syncColWidthToComponent() {\n const { colStart, colEnd } = this.table.getBodyVisibleColRange();\n const adjustStartColIndex = colStart;\n const adjustEndColIndex = Math.min(colEnd, this.table.scenegraph.proxy.colEnd);\n // console.log('syncColWidthToComponent adjust', adjustStartColIndex, adjustEndColIndex);\n\n //判断seriesNumberComponent的冻结列数是否变化\n if (this.table.frozenColCount !== (this.seriesNumberComponent.getAttributes() as any).frozenColCount) {\n this.seriesNumberComponent.setAttributes({ frozenColCount: this.table.frozenColCount } as any);\n }\n // 调用列序号重建接口\n this.seriesNumberComponent.recreateCellsToColSeriesNumberGroup(adjustStartColIndex, adjustEndColIndex);\n //更新冻结列序号单元格的x和width\n for (let i = 0; i < this.table.frozenColCount; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const cell_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: cell_attrs.x, width: cell_attrs.width });\n }\n // 更新列序号单元格的x和width\n for (let i = adjustStartColIndex; i <= adjustEndColIndex; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const col_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: col_attrs.x, width: col_attrs.width });\n }\n }\n\n syncScrollToComponent() {\n //TODO 根据滚动方向,同步对应的序号组件的滚动\n this.syncRowHeightToComponent();\n this.syncColWidthToComponent();\n const y = this.table.scenegraph.bodyGroup.getAttributes().y;\n const x = this.table.scenegraph.bodyGroup.getAttributes().x;\n this.seriesNumberComponent.setRowSeriesNumberGroupAttributes({\n y: y + this.seriesNumberComponent.colSeriesNumberHeight\n });\n this.seriesNumberComponent.setColSeriesNumberGroupAttributes({\n x: x + this.seriesNumberComponent.rowSeriesNumberWidth\n });\n }\n // syncFrozenToComponent() {\n // const frozenRowCount = this.table.frozenRowCount;\n // const frozenColCount = this.table.frozenColCount;\n // this.seriesNumberComponent.setFrozenTopRow(frozenRowCount);\n // this.seriesNumberComponent.setFrozenLeftCol(frozenColCount);\n // }\n}\n"]}
1
+ {"version":3,"sources":["../src/table-series-number.ts"],"names":[],"mappings":"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","file":"table-series-number.js","sourcesContent":["import type { BaseTableAPI, ListTable, ListTableConstructorOptions, pluginsDefinition } from '@visactor/vtable';\nimport { TABLE_EVENT_TYPE, TYPES } from '@visactor/vtable';\nimport { TableSeriesNumber as VRenderTableSeriesNumber, SeriesNumberEvent } from '@visactor/vtable/es/vrender';\nimport type { ILayer, TableSeriesNumberAttributes } from '@visactor/vtable/es/vrender';\n\nexport type TableSeriesNumberOptions = {\n rowCount: number;\n colCount: number;\n dragOrder?: {\n enableDragColumnOrder?: boolean;\n enableDragRowOrder?: boolean;\n };\n // syncRowHeightFromTable?: boolean;\n // syncColWidthFromTable?: boolean;\n} & Partial<\n Pick<\n TableSeriesNumberAttributes,\n | 'rowSeriesNumberGenerate'\n | 'colSeriesNumberGenerate'\n | 'rowSeriesNumberCellStyle'\n | 'colSeriesNumberCellStyle'\n | 'cornerCellStyle'\n | 'colSeriesNumberHeight'\n | 'rowSeriesNumberWidth'\n >\n>;\nexport class TableSeriesNumber implements pluginsDefinition.IVTablePlugin {\n id = `table-series-number`;\n name = 'Table Series Number';\n runTime = [\n TABLE_EVENT_TYPE.INITIALIZED,\n TABLE_EVENT_TYPE.BEFORE_INIT,\n TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION,\n TABLE_EVENT_TYPE.UPDATED\n ];\n pluginOptions: TableSeriesNumberOptions;\n table: ListTable;\n seriesNumberComponent: VRenderTableSeriesNumber;\n componentLayoutLayer: ILayer;\n lastCurrentRow: number = 0;\n lastCurrentCol: number = 0;\n startRowIndex: number = 0;\n scrollTimer: any;\n constructor(pluginOptions: TableSeriesNumberOptions) {\n this.pluginOptions = pluginOptions;\n this.seriesNumberComponent = new VRenderTableSeriesNumber({\n rowCount: pluginOptions.rowCount,\n colCount: pluginOptions.colCount,\n rowSeriesNumberWidth: pluginOptions.rowSeriesNumberWidth,\n colSeriesNumberHeight: pluginOptions.colSeriesNumberHeight,\n rowSeriesNumberGenerate: pluginOptions.rowSeriesNumberGenerate,\n colSeriesNumberGenerate: pluginOptions.colSeriesNumberGenerate,\n rowSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.rowSeriesNumberCellStyle\n ),\n colSeriesNumberCellStyle: Object.assign(\n {\n text: {\n fontSize: 14,\n fill: '#7A7A7A',\n pickable: false,\n textAlign: 'left',\n textBaseline: 'middle',\n padding: [2, 4, 2, 4]\n },\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#c8daf6',\n opacity: 0.7\n },\n select: {\n fill: '#c8daf6',\n opacity: 1\n }\n }\n },\n pluginOptions.colSeriesNumberCellStyle\n ),\n cornerCellStyle: Object.assign(\n {\n borderLine: {\n stroke: '#D9D9D9',\n lineWidth: 1,\n pickable: false\n },\n bgColor: '#F9F9F9',\n states: {\n hover: {\n fill: '#98C8A5',\n opacity: 0.7\n },\n select: {\n fill: '#98C8A5',\n opacity: 1\n }\n }\n },\n pluginOptions.cornerCellStyle\n ),\n checkMoveColumnOrder: (colIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragColumnOrder ? this.table.isColumnSelected(colIndex) : false;\n },\n checkMoveRowOrder: (rowIndex: number) => {\n return this.pluginOptions.dragOrder?.enableDragRowOrder ? this.table.isRowSelected(rowIndex) : false;\n }\n });\n this.listenComponentEvents();\n }\n\n run(...args: any[]) {\n // const eventArgs = args[0];\n const runTime = args[1];\n if (runTime === TABLE_EVENT_TYPE.BEFORE_INIT || runTime === TABLE_EVENT_TYPE.BEFORE_UPDATE_OPTION) {\n const eventArgs = args[0];\n const table: BaseTableAPI = args[2];\n this.table = table as ListTable;\n const options: ListTableConstructorOptions = eventArgs.options;\n const records = options.records ?? [];\n // //用空数据将records填充到pluginOptions.rowCount\n // for (let i = records.length; i < this.pluginOptions.rowCount; i++) {\n // records.push({});\n // }\n // 直接设置数组长度,不填充任何内容\n if (records.length < this.pluginOptions.rowCount) {\n records.length = this.pluginOptions.rowCount;\n }\n options.records = records;\n if (!options.columns) {\n options.columns = [];\n }\n for (let i = options.columns.length; i < this.pluginOptions.colCount; i++) {\n const columnFields = {\n field: i,\n key: i,\n title: ``\n };\n options.columns.push(columnFields);\n }\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n options.contentOffsetX = rowSeriesNumberColWidth;\n options.contentOffsetY = colSeriesNumberRowHeight;\n // if (options.columns.length < this.pluginOptions.colCount) {\n // options.columns.length = this.pluginOptions.colCount;\n // }\n } else if (runTime === TABLE_EVENT_TYPE.INITIALIZED || runTime === TABLE_EVENT_TYPE.UPDATED) {\n this.table = args[2];\n if (!this.table.options.customConfig) {\n this.table.options.customConfig = {};\n }\n this.table.options.customConfig.cancelSelectCellHook = (e: any) => {\n const target = e.target;\n if (target.isDescendantsOf(this.seriesNumberComponent)) {\n return false;\n }\n return true;\n };\n\n // const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n // const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n // // this.table.scenegraph.stage.defaultLayer.setAttributes({\n // // x: rowSeriesNumberColWidth,\n // // y: colSeriesNumberRowHeight,\n // // width: 1700,\n // // height: 500,\n // // clip: true\n // // });\n // this.table.setTranslate(colSeriesNumberRowHeight, rowSeriesNumberColWidth);\n this.seriesNumberComponent.setAttributes({\n rowCount: this.table.rowCount,\n colCount: this.table.colCount,\n frozenRowCount: this.table.frozenRowCount,\n frozenColCount: this.table.frozenColCount,\n rightFrozenColCount: this.table.rightFrozenColCount,\n bottomFrozenRowCount: this.table.bottomFrozenRowCount\n });\n // add到layer上时会触发组件的render方法\n const newLayer = this.table.scenegraph.stage.createLayer();\n newLayer.appendChild(this.seriesNumberComponent);\n newLayer.setAttributes({ pickable: false });\n this.componentLayoutLayer = newLayer;\n\n // if (this.pluginOptions.syncRowHeightFromTable) {\n this.syncRowHeightToComponent();\n // }\n // if (this.pluginOptions.syncColWidthFromTable) {\n this.syncColWidthToComponent();\n // }\n\n this.listenTableEvents();\n }\n }\n private handleScroll = () => {\n //节流处理,避免滚动时频繁触发\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n this.scrollTimer = setTimeout(() => {\n this.scrollTimer = null;\n this.syncScrollToComponent();\n }, 10); // 优化: 由5ms改为10ms,减少频繁触发\n };\n\n private handleAfterSort = () => {\n this.syncScrollToComponent();\n };\n\n private handleSelectedChanged = (e: any) => {\n this.seriesNumberComponent.removeAllSelectedIndexs();\n const selectRange = this.table.stateManager.select.ranges;\n\n const rowSelectedIndexs = [];\n const colSelectedIndexs = [];\n for (const range of selectRange) {\n const { row: rowStart, col: colStart } = range.start;\n const { row: rowEnd, col: colEnd } = range.end;\n rowSelectedIndexs.push({ startIndex: Math.min(rowStart, rowEnd), endIndex: Math.max(rowStart, rowEnd) });\n colSelectedIndexs.push({ startIndex: Math.min(colStart, colEnd), endIndex: Math.max(colStart, colEnd) });\n }\n this.seriesNumberComponent.addRowSelectedRanges(rowSelectedIndexs);\n this.seriesNumberComponent.addColSelectedRanges(colSelectedIndexs);\n if (this.table.stateManager.select.isSelectAll) {\n this.seriesNumberComponent.addCornderSelected();\n }\n\n this.seriesNumberComponent.renderSelectedIndexsState();\n };\n\n private handleResizeColumnEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleResizeRowEnd = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', true);\n };\n\n private handleChangeHeaderPosition = (e: any) => {\n // console.log('-----handleChangeHeaderPosition');\n this.syncColWidthToComponent();\n };\n\n listenTableEvents() {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.on(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.on(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n this.table.on(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, this.handleChangeHeaderPosition);\n }\n\n private handleSeriesNumberCellRightClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n const rowIndex = seriesNumberCell.id;\n //判断rowIndex整行是否被选中\n const isRowSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.row <= rowIndex &&\n rowIndex <= range.end.row &&\n range.start.col === 0 &&\n range.end.col === this.table.colCount - 1\n );\n });\n //当前右键的行号 没有整行被选中,则进行选中\n if (!isRowSelected) {\n this.table.selectCells([\n { start: { row: rowIndex, col: 0 }, end: { row: rowIndex, col: this.table.colCount - 1 } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n rowIndex: rowIndex\n }\n });\n } else if (isCol) {\n const colIndex = seriesNumberCell.id;\n //判断colIndex整列是否被选中\n const isColSelected = this.table.stateManager.select.ranges.some(range => {\n return (\n range.start.col <= colIndex &&\n colIndex <= range.end.col &&\n range.start.row === 0 &&\n range.end.row === this.table.rowCount - 1\n );\n });\n //当前右键的列号 没有整列被选中,则进行选中\n if (!isColSelected) {\n this.table.selectCells([\n { start: { row: 0, col: colIndex }, end: { row: this.table.rowCount - 1, col: colIndex } }\n ]);\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n colIndex: colIndex\n }\n });\n } else {\n //直接全选\n this.table.selectCells([\n { start: { row: 0, col: 0 }, end: { row: this.table.rowCount - 1, col: this.table.colCount - 1 } }\n ]);\n this.table.fireListeners(TABLE_EVENT_TYPE.PLUGIN_EVENT, {\n plugin: this,\n event: event,\n pluginEventInfo: {\n eventType: 'rightclick',\n isCorner: true\n }\n });\n }\n };\n\n private handleSeriesNumberCellHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellUnHover = (e: any) => {\n this.table.scenegraph.renderSceneGraph();\n };\n\n private handleSeriesNumberCellClick = (e: any) => {\n const { seriesNumberCell, event, isDragSelect } = e.detail;\n const ctrlMultiSelect = this.table.options.keyboardOptions?.ctrlMultiSelect ?? true;\n const shiftMultiSelect = (this.table.options.keyboardOptions as any)?.shiftMultiSelect ?? true;\n const enableCtrlSelectMode = (event.nativeEvent.ctrlKey || event.nativeEvent.metaKey) && ctrlMultiSelect;\n const enableShiftSelectMode = event.nativeEvent.shiftKey && shiftMultiSelect;\n const isRow = seriesNumberCell.name.includes('row');\n const isCol = seriesNumberCell.name.includes('col');\n if (isRow) {\n this.table.stateManager.setSelectInline('row');\n const rowIndex = seriesNumberCell.id;\n\n if (isDragSelect) {\n this.table.dragSelectRow(rowIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectRow(rowIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else if (isCol) {\n this.table.stateManager.setSelectInline('col');\n const colIndex = seriesNumberCell.id;\n if (isDragSelect) {\n this.table.dragSelectCol(colIndex, enableCtrlSelectMode);\n } else {\n this.table.startDragSelectCol(colIndex, enableCtrlSelectMode, enableShiftSelectMode);\n }\n } else {\n this.table.eventManager.deelTableSelectAll();\n }\n };\n\n private handleSeriesNumberCellClickUp = (e: any) => {\n this.table.stateManager.setSelectInline(false);\n this.table.endDragSelect();\n };\n\n private handleRowSeriesNumberWidthChange = (e: any) => {\n const rowSeriesNumberColWidth = this.seriesNumberComponent.rowSeriesNumberWidth;\n const colSeriesNumberRowHeight = this.seriesNumberComponent.colSeriesNumberHeight;\n this.table.setContentInsetXY(rowSeriesNumberColWidth, colSeriesNumberRowHeight);\n };\n\n private handleResizeColWidthStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeCol(colIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleResizeRowHeightStart = (e: any) => {\n this.seriesNumberComponent.setAttribute('hover', false);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startResizeRow(rowIndex, event.viewport.x, event.viewport.y);\n };\n\n private handleDragColumOrderStart = (e: any) => {\n // console.log('handleDragColumOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { colIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(colIndex, 0, event.viewport.x, event.viewport.y, event.nativeEvent, 'column');\n };\n private handleDragRowOrderStart = (e: any) => {\n // console.log('handleDragRowOrderStart', e.detail.event.viewport.x, e.detail.event.viewport.y);\n const { rowIndex, event } = e.detail;\n this.table.stateManager.updateInteractionState(TYPES.InteractionState.grabing);\n this.table.stateManager.startMoveCol(0, rowIndex, event.viewport.x, event.viewport.y, event.nativeEvent, 'row');\n };\n\n listenComponentEvents() {\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellRightClick, this.handleSeriesNumberCellRightClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.on(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.on(SeriesNumberEvent.rowSeriesNumberWidthChange, this.handleRowSeriesNumberWidthChange);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.on(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n if (this.pluginOptions.dragOrder?.enableDragColumnOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragColumnOrderStart, this.handleDragColumOrderStart);\n }\n if (this.pluginOptions.dragOrder?.enableDragRowOrder) {\n this.seriesNumberComponent.on(SeriesNumberEvent.dragRowOrderStart, this.handleDragRowOrderStart);\n }\n }\n release() {\n // 清除组件资源\n if (this.componentLayoutLayer) {\n this.table.scenegraph.stage.removeLayer(this.componentLayoutLayer._uid);\n this.componentLayoutLayer = null;\n }\n\n // 清除定时器\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n\n // 移除表格事件监听器\n if (this.table) {\n this.table.off(TABLE_EVENT_TYPE.SCROLL, this.handleScroll);\n this.table.off(TABLE_EVENT_TYPE.AFTER_SORT, this.handleAfterSort);\n this.table.off(TABLE_EVENT_TYPE.SELECTED_CHANGED, this.handleSelectedChanged);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, this.handleResizeColumnEnd);\n this.table.off(TABLE_EVENT_TYPE.RESIZE_ROW_END, this.handleResizeRowEnd);\n }\n // 移除组件事件监听器\n if (this.seriesNumberComponent) {\n this.seriesNumberComponent.off(\n SeriesNumberEvent.seriesNumberCellRightClick,\n this.handleSeriesNumberCellRightClick\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellHover, this.handleSeriesNumberCellHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellUnHover, this.handleSeriesNumberCellUnHover);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClick, this.handleSeriesNumberCellClick);\n this.seriesNumberComponent.off(SeriesNumberEvent.seriesNumberCellClickUp, this.handleSeriesNumberCellClickUp);\n this.seriesNumberComponent.off(\n SeriesNumberEvent.rowSeriesNumberWidthChange,\n this.handleRowSeriesNumberWidthChange\n );\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeColWidthStart, this.handleResizeColWidthStart);\n this.seriesNumberComponent.off(SeriesNumberEvent.resizeRowHeightStart, this.handleResizeRowHeightStart);\n\n // 释放组件资源\n this.seriesNumberComponent.release?.();\n this.seriesNumberComponent = null;\n }\n }\n\n syncRowHeightToComponent() {\n // console.log('syncRowHeightToComponent adjust', adjustStartRowIndex, adjustEndRowIndex);\n const rowRange = this.table.getBodyVisibleRowRange();\n if (!rowRange) {\n return;\n }\n const { rowStart, rowEnd } = this.table.getBodyVisibleRowRange();\n const adjustStartRowIndex = Math.max(rowStart - 2, this.table.frozenRowCount);\n const adjustEndRowIndex = Math.min(rowEnd + 2, this.table.rowCount - 1);\n //判断seriesNumberComponent的冻结行数是否变化\n if (this.table.frozenRowCount !== (this.seriesNumberComponent.getAttributes() as any).frozenRowCount) {\n this.seriesNumberComponent.setAttributes({ frozenRowCount: this.table.frozenRowCount } as any);\n }\n // 调用行序号重建接口\n this.seriesNumberComponent.recreateCellsToRowSeriesNumberGroup(adjustStartRowIndex, adjustEndRowIndex);\n // 更新冻结行序号单元格的y和height\n for (let i = 0; i < this.table.frozenRowCount; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n\n // 更新行序号单元格的y和height\n for (let i = adjustStartRowIndex; i <= adjustEndRowIndex; i++) {\n const cellGroup = this.table.scenegraph.getCell(0, i);\n const cell_attrs = cellGroup.getAttributes();\n this.seriesNumberComponent.setRowSeriesNumberCellAttributes(i, { y: cell_attrs.y, height: cell_attrs.height });\n }\n }\n syncColWidthToComponent() {\n const { colStart, colEnd } = this.table.getBodyVisibleColRange();\n const adjustStartColIndex = colStart;\n const adjustEndColIndex = Math.min(colEnd, this.table.scenegraph.proxy.colEnd);\n // console.log('syncColWidthToComponent adjust', adjustStartColIndex, adjustEndColIndex);\n\n //判断seriesNumberComponent的冻结列数是否变化\n if (this.table.frozenColCount !== (this.seriesNumberComponent.getAttributes() as any).frozenColCount) {\n this.seriesNumberComponent.setAttributes({ frozenColCount: this.table.frozenColCount } as any);\n }\n // 调用列序号重建接口\n this.seriesNumberComponent.recreateCellsToColSeriesNumberGroup(adjustStartColIndex, adjustEndColIndex);\n //更新冻结列序号单元格的x和width\n for (let i = 0; i < this.table.frozenColCount; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const cell_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: cell_attrs.x, width: cell_attrs.width });\n }\n // 更新列序号单元格的x和width\n for (let i = adjustStartColIndex; i <= adjustEndColIndex; i++) {\n const colGroup = this.table.scenegraph.getColGroup(i);\n const col_attrs = colGroup.getAttributes();\n this.seriesNumberComponent.setColSeriesNumberCellAttributes(i, { x: col_attrs.x, width: col_attrs.width });\n }\n }\n\n syncScrollToComponent() {\n //TODO 根据滚动方向,同步对应的序号组件的滚动\n this.syncRowHeightToComponent();\n this.syncColWidthToComponent();\n const y = this.table.scenegraph.bodyGroup.getAttributes().y;\n const x = this.table.scenegraph.bodyGroup.getAttributes().x;\n this.seriesNumberComponent.setRowSeriesNumberGroupAttributes({\n y: y + this.seriesNumberComponent.colSeriesNumberHeight\n });\n this.seriesNumberComponent.setColSeriesNumberGroupAttributes({\n x: x + this.seriesNumberComponent.rowSeriesNumberWidth\n });\n }\n // syncFrozenToComponent() {\n // const frozenRowCount = this.table.frozenRowCount;\n // const frozenColCount = this.table.frozenColCount;\n // this.seriesNumberComponent.setFrozenTopRow(frozenRowCount);\n // this.seriesNumberComponent.setFrozenLeftCol(frozenColCount);\n // }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vtable-plugins",
3
- "version": "1.22.7",
3
+ "version": "1.22.8-alpha.13",
4
4
  "description": "The search util of VTable",
5
5
  "author": {
6
6
  "name": "VisActor",
@@ -42,8 +42,8 @@
42
42
  "@types/file-saver": "2.0.7"
43
43
  },
44
44
  "peerDependencies": {
45
- "@visactor/vtable": "1.22.7",
46
- "@visactor/vtable-gantt": "1.22.7"
45
+ "@visactor/vtable-gantt": "1.22.8-alpha.13",
46
+ "@visactor/vtable": "1.22.8-alpha.13"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@visactor/vtable-gantt": {
@@ -53,6 +53,9 @@
53
53
  "devDependencies": {
54
54
  "cross-env": "^7.0.3",
55
55
  "increase-memory-limit": "^1.0.7",
56
+ "@visactor/vtable": "1.22.8-alpha.13",
57
+ "@visactor/vtable-editors": "1.22.8-alpha.13",
58
+ "@visactor/vtable-gantt": "1.22.8-alpha.13",
56
59
  "@visactor/vchart": "2.0.11-alpha.3",
57
60
  "@rushstack/eslint-patch": "~1.1.4",
58
61
  "react": "^18.0.0",
@@ -95,12 +98,9 @@
95
98
  "@types/react-is": "^17.0.3",
96
99
  "rollup-plugin-node-resolve": "5.2.0",
97
100
  "@types/lodash": "4.14.182",
98
- "@visactor/vtable": "1.22.7",
99
- "@visactor/vtable-editors": "1.22.7",
100
- "@internal/ts-config": "0.0.1",
101
101
  "@internal/eslint-config": "0.0.1",
102
102
  "@internal/bundler": "0.0.1",
103
- "@visactor/vtable-gantt": "1.22.7"
103
+ "@internal/ts-config": "0.0.1"
104
104
  },
105
105
  "scripts": {
106
106
  "demo": "vite ./demo",