@visactor/vtable 1.26.6 → 1.26.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/cjs/ListTable-all.js +5 -5
  2. package/cjs/ListTable-all.js.map +1 -1
  3. package/cjs/ListTable.d.ts +1 -1
  4. package/cjs/ListTable.js +5 -3
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/PivotChart.js +5 -4
  7. package/cjs/PivotChart.js.map +1 -1
  8. package/cjs/PivotTable-all.js +4 -3
  9. package/cjs/PivotTable-all.js.map +1 -1
  10. package/cjs/body-helper/body-helper.d.ts +1 -1
  11. package/cjs/body-helper/body-helper.js +1 -0
  12. package/cjs/body-helper/body-helper.js.map +1 -1
  13. package/cjs/components/tooltip/TooltipHandler.d.ts +4 -0
  14. package/cjs/components/tooltip/TooltipHandler.js +32 -7
  15. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  16. package/cjs/core/BaseTable.js +7 -4
  17. package/cjs/core/BaseTable.js.map +1 -1
  18. package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
  19. package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
  20. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  21. package/cjs/core/tableHelper.js +1 -2
  22. package/cjs/data/DataSource.js +2 -1
  23. package/cjs/event/event.js +1 -1
  24. package/cjs/event/helper.js +1 -1
  25. package/cjs/event/media-click.js +145 -13
  26. package/cjs/event/media-click.js.map +1 -1
  27. package/cjs/event/scroll.js +1 -1
  28. package/cjs/event/sparkline-event.js +1 -1
  29. package/cjs/event/util.js +1 -1
  30. package/cjs/header-helper/header-helper.js +3 -1
  31. package/cjs/header-helper/header-helper.js.map +1 -1
  32. package/cjs/index.d.ts +3 -3
  33. package/cjs/index.js +1 -1
  34. package/cjs/index.js.map +1 -1
  35. package/cjs/plugins/custom-cell-style.js +1 -1
  36. package/cjs/plugins/index.js +1 -2
  37. package/cjs/plugins/interface.js +1 -1
  38. package/cjs/plugins/invert-highlight.js +1 -1
  39. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  40. package/cjs/plugins/plugin-manager.js +1 -1
  41. package/cjs/scenegraph/group-creater/cell-helper.d.ts +4 -2
  42. package/cjs/scenegraph/group-creater/cell-helper.js +67 -42
  43. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  44. package/cjs/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
  45. package/cjs/scenegraph/group-creater/cell-type/audio-cell.js +83 -0
  46. package/cjs/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
  47. package/cjs/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
  48. package/cjs/scenegraph/group-creater/cell-type/button-cell.js +5 -4
  49. package/cjs/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  50. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  51. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  53. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
  54. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  55. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  56. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +43 -15
  57. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  58. package/cjs/scenegraph/group-creater/cell-type/index.d.ts +1 -0
  59. package/cjs/scenegraph/group-creater/cell-type/index.js +8 -2
  60. package/cjs/scenegraph/group-creater/cell-type/index.js.map +1 -1
  61. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
  62. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js +64 -0
  63. package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
  64. package/cjs/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
  65. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
  66. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  68. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
  69. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  70. package/cjs/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
  71. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
  72. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  73. package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  74. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +44 -23
  75. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  76. package/cjs/scenegraph/group-creater/column-helper.js +14 -7
  77. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  78. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  79. package/cjs/scenegraph/group-creater/progress/proxy.js +11 -5
  80. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  81. package/cjs/scenegraph/icon/icon-update.js +1 -0
  82. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  83. package/cjs/scenegraph/layout/compute-col-width.js +8 -3
  84. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  85. package/cjs/scenegraph/layout/compute-row-height.js +18 -5
  86. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  87. package/cjs/scenegraph/layout/update-height.js +1 -1
  88. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  89. package/cjs/scenegraph/layout/update-width.js +1 -1
  90. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  91. package/cjs/scenegraph/scenegraph.d.ts +1 -0
  92. package/cjs/scenegraph/scenegraph.js +53 -46
  93. package/cjs/scenegraph/scenegraph.js.map +1 -1
  94. package/cjs/scenegraph/stick-text/index.js +46 -20
  95. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  96. package/cjs/scenegraph/utils/deal-promise-data.d.ts +1 -1
  97. package/cjs/scenegraph/utils/deal-promise-data.js +2 -2
  98. package/cjs/scenegraph/utils/deal-promise-data.js.map +1 -1
  99. package/cjs/state/cell-move/index.js +6 -3
  100. package/cjs/state/cell-move/index.js.map +1 -1
  101. package/cjs/state/checkbox/checkbox.d.ts +3 -1
  102. package/cjs/state/checkbox/checkbox.js +53 -34
  103. package/cjs/state/checkbox/checkbox.js.map +1 -1
  104. package/cjs/state/radio/radio.d.ts +3 -1
  105. package/cjs/state/radio/radio.js +69 -12
  106. package/cjs/state/radio/radio.js.map +1 -1
  107. package/cjs/state/state.d.ts +3 -2
  108. package/cjs/state/state.js +6 -3
  109. package/cjs/state/state.js.map +1 -1
  110. package/cjs/tools/media.d.ts +1 -0
  111. package/cjs/tools/media.js +19 -0
  112. package/cjs/tools/media.js.map +1 -0
  113. package/cjs/ts-types/base-table.d.ts +1 -0
  114. package/cjs/ts-types/base-table.js.map +1 -1
  115. package/cjs/ts-types/column/type.d.ts +2 -2
  116. package/cjs/ts-types/column/type.js.map +1 -1
  117. package/cjs/ts-types/events.d.ts +3 -1
  118. package/cjs/ts-types/events.js.map +1 -1
  119. package/cjs/ts-types/icon.d.ts +1 -0
  120. package/cjs/ts-types/icon.js.map +1 -1
  121. package/cjs/ts-types/list-table/define/image-define.d.ts +10 -0
  122. package/cjs/ts-types/list-table/define/image-define.js.map +1 -1
  123. package/cjs/ts-types/list-table/define/index.d.ts +5 -4
  124. package/cjs/ts-types/list-table/define/index.js.map +1 -1
  125. package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -4
  126. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  127. package/cjs/ts-types/list-table/layout-map/index.d.ts +1 -1
  128. package/cjs/ts-types/list-table/layout-map/index.js.map +1 -1
  129. package/cjs/ts-types/menu.d.ts +12 -0
  130. package/cjs/ts-types/menu.js.map +1 -1
  131. package/cjs/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
  132. package/cjs/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  133. package/cjs/ts-types/pivot-table/dimension/index.d.ts +5 -3
  134. package/cjs/ts-types/pivot-table/dimension/index.js.map +1 -1
  135. package/cjs/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
  136. package/cjs/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  137. package/cjs/ts-types/pivot-table/indicator/index.d.ts +3 -3
  138. package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
  139. package/cjs/ts-types/table-engine.d.ts +6 -3
  140. package/cjs/ts-types/table-engine.js.map +1 -1
  141. package/cjs/ts-types/tooltip.d.ts +1 -0
  142. package/cjs/ts-types/tooltip.js.map +1 -1
  143. package/cjs/vrender.js.map +1 -1
  144. package/dist/vtable.js +1127 -325
  145. package/dist/vtable.min.js +1 -1
  146. package/es/ListTable-all.js +4 -4
  147. package/es/ListTable-all.js.map +1 -1
  148. package/es/ListTable.d.ts +1 -1
  149. package/es/ListTable.js +5 -3
  150. package/es/ListTable.js.map +1 -1
  151. package/es/PivotChart.js +4 -4
  152. package/es/PivotChart.js.map +1 -1
  153. package/es/PivotTable-all.js +4 -4
  154. package/es/PivotTable-all.js.map +1 -1
  155. package/es/body-helper/body-helper.d.ts +1 -1
  156. package/es/body-helper/body-helper.js +1 -0
  157. package/es/body-helper/body-helper.js.map +1 -1
  158. package/es/components/tooltip/TooltipHandler.d.ts +4 -0
  159. package/es/components/tooltip/TooltipHandler.js +32 -7
  160. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  161. package/es/core/BaseTable.js +7 -4
  162. package/es/core/BaseTable.js.map +1 -1
  163. package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
  164. package/es/core/TABLE_EVENT_TYPE.js +1 -0
  165. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  166. package/es/core/tableHelper.js +1 -2
  167. package/es/data/DataSource.js +2 -1
  168. package/es/event/event.js +1 -1
  169. package/es/event/helper.js +1 -1
  170. package/es/event/media-click.js +148 -12
  171. package/es/event/media-click.js.map +1 -1
  172. package/es/event/scroll.js +1 -1
  173. package/es/event/sparkline-event.js +1 -1
  174. package/es/event/util.js +1 -1
  175. package/es/header-helper/header-helper.js +3 -1
  176. package/es/header-helper/header-helper.js.map +1 -1
  177. package/es/index.d.ts +3 -3
  178. package/es/index.js +1 -1
  179. package/es/index.js.map +1 -1
  180. package/es/plugins/custom-cell-style.js +1 -1
  181. package/es/plugins/index.js +1 -2
  182. package/es/plugins/interface.js +1 -1
  183. package/es/plugins/invert-highlight.js +1 -1
  184. package/es/plugins/list-tree-stick-cell.js +1 -1
  185. package/es/plugins/plugin-manager.js +1 -1
  186. package/es/scenegraph/group-creater/cell-helper.d.ts +4 -2
  187. package/es/scenegraph/group-creater/cell-helper.js +67 -40
  188. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  189. package/es/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
  190. package/es/scenegraph/group-creater/cell-type/audio-cell.js +89 -0
  191. package/es/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
  192. package/es/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
  193. package/es/scenegraph/group-creater/cell-type/button-cell.js +5 -4
  194. package/es/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  195. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  196. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  197. package/es/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
  198. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
  199. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  200. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  201. package/es/scenegraph/group-creater/cell-type/image-cell.js +43 -14
  202. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  203. package/es/scenegraph/group-creater/cell-type/index.d.ts +1 -0
  204. package/es/scenegraph/group-creater/cell-type/index.js +6 -0
  205. package/es/scenegraph/group-creater/cell-type/index.js.map +1 -1
  206. package/es/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
  207. package/es/scenegraph/group-creater/cell-type/media-cell-helper.js +56 -0
  208. package/es/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
  209. package/es/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
  210. package/es/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
  211. package/es/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  212. package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
  213. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
  214. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  215. package/es/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
  216. package/es/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
  217. package/es/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  218. package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
  219. package/es/scenegraph/group-creater/cell-type/video-cell.js +47 -22
  220. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  221. package/es/scenegraph/group-creater/column-helper.js +14 -8
  222. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  223. package/es/scenegraph/group-creater/progress/proxy.d.ts +1 -0
  224. package/es/scenegraph/group-creater/progress/proxy.js +11 -5
  225. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  226. package/es/scenegraph/icon/icon-update.js +1 -0
  227. package/es/scenegraph/icon/icon-update.js.map +1 -1
  228. package/es/scenegraph/layout/compute-col-width.js +8 -3
  229. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  230. package/es/scenegraph/layout/compute-row-height.js +17 -5
  231. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  232. package/es/scenegraph/layout/update-height.js +1 -1
  233. package/es/scenegraph/layout/update-height.js.map +1 -1
  234. package/es/scenegraph/layout/update-width.js +1 -1
  235. package/es/scenegraph/layout/update-width.js.map +1 -1
  236. package/es/scenegraph/scenegraph.d.ts +1 -0
  237. package/es/scenegraph/scenegraph.js +53 -46
  238. package/es/scenegraph/scenegraph.js.map +1 -1
  239. package/es/scenegraph/stick-text/index.js +46 -18
  240. package/es/scenegraph/stick-text/index.js.map +1 -1
  241. package/es/scenegraph/utils/deal-promise-data.d.ts +1 -1
  242. package/es/scenegraph/utils/deal-promise-data.js +2 -2
  243. package/es/scenegraph/utils/deal-promise-data.js.map +1 -1
  244. package/es/state/cell-move/index.js +6 -3
  245. package/es/state/cell-move/index.js.map +1 -1
  246. package/es/state/checkbox/checkbox.d.ts +3 -1
  247. package/es/state/checkbox/checkbox.js +53 -34
  248. package/es/state/checkbox/checkbox.js.map +1 -1
  249. package/es/state/radio/radio.d.ts +3 -1
  250. package/es/state/radio/radio.js +70 -13
  251. package/es/state/radio/radio.js.map +1 -1
  252. package/es/state/state.d.ts +3 -2
  253. package/es/state/state.js +6 -2
  254. package/es/state/state.js.map +1 -1
  255. package/es/tools/media.d.ts +1 -0
  256. package/es/tools/media.js +11 -0
  257. package/es/tools/media.js.map +1 -0
  258. package/es/ts-types/base-table.d.ts +1 -0
  259. package/es/ts-types/base-table.js.map +1 -1
  260. package/es/ts-types/column/type.d.ts +2 -2
  261. package/es/ts-types/column/type.js.map +1 -1
  262. package/es/ts-types/events.d.ts +3 -1
  263. package/es/ts-types/events.js.map +1 -1
  264. package/es/ts-types/icon.d.ts +1 -0
  265. package/es/ts-types/icon.js.map +1 -1
  266. package/es/ts-types/list-table/define/image-define.d.ts +10 -0
  267. package/es/ts-types/list-table/define/image-define.js.map +1 -1
  268. package/es/ts-types/list-table/define/index.d.ts +5 -4
  269. package/es/ts-types/list-table/define/index.js.map +1 -1
  270. package/es/ts-types/list-table/layout-map/api.d.ts +4 -4
  271. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  272. package/es/ts-types/list-table/layout-map/index.d.ts +1 -1
  273. package/es/ts-types/list-table/layout-map/index.js.map +1 -1
  274. package/es/ts-types/menu.d.ts +12 -0
  275. package/es/ts-types/menu.js.map +1 -1
  276. package/es/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
  277. package/es/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
  278. package/es/ts-types/pivot-table/dimension/index.d.ts +5 -3
  279. package/es/ts-types/pivot-table/dimension/index.js.map +1 -1
  280. package/es/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
  281. package/es/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  282. package/es/ts-types/pivot-table/indicator/index.d.ts +3 -3
  283. package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
  284. package/es/ts-types/table-engine.d.ts +6 -3
  285. package/es/ts-types/table-engine.js.map +1 -1
  286. package/es/ts-types/tooltip.d.ts +1 -0
  287. package/es/ts-types/tooltip.js.map +1 -1
  288. package/es/vrender.js.map +1 -1
  289. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, FieldDef, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CachedDataSource } from '../../data';\nimport type { CheckBox } from './../../vrender';\n\ntype CheckboxStateValue = boolean | 'indeterminate';\ntype CheckboxRecordValue = CheckboxStateValue | { checked?: CheckboxStateValue };\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const table = state.table;\n const cellRange = table.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n for (let i = cellRange.start.col; i <= cellRange.end.col; i++) {\n for (let j = cellRange.start.row; j <= cellRange.end.row; j++) {\n setSingleCheckedState(i, j, field, checked, state);\n }\n }\n } else {\n setSingleCheckedState(col, row, field, checked, state);\n }\n}\n\nfunction setSingleCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager) {\n state.headerCheckedState[field] = checked;\n if (state.table.internalProps.enableCheckboxCascade) {\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n }\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else if (state.table.internalProps.enableCheckboxCascade && dataIndex.includes(',')) {\n // child record, sync parent record state\n const parentDataIndex = dataIndex.split(',').slice(0, -1).join(','); // get latest parent data index\n if (state.checkedState.has(parentDataIndex) && state.checkedState.get(parentDataIndex)[field] === true) {\n state.checkedState.set(dataIndex, {\n [field]: true\n });\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if ((hd.define.cellType === 'checkbox' || isFunction(hd.define.cellType)) && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || (!state.table.internalProps.enableCheckboxCascade && data?.vtableMerge)) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.getChildByName('checkbox') as any);\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function setCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n setRecordCheckboxState(recordIndex, field, checked, table.stateManager.checkedState);\n\n if (table.internalProps.enableCheckboxCascade && checked !== 'indeterminate') {\n updateChildrenCheckboxStateByRecordIndex(recordIndex, field, checked, table);\n updateParentCheckboxStateByRecordIndex(recordIndex, field, table);\n }\n\n updateVisibleCheckboxCellByRecordIndex(recordIndex, field, checked, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function clearCheckboxState(field: FieldDef, table: BaseTableAPI) {\n if (!isValid(field)) {\n return;\n }\n clearRecordCheckboxState((table as any).records, field, table);\n updateVisibleCheckboxCellsByField(field, false, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function setCellCheckboxStateByAttribute(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.getChildByName('checkbox') as any);\n if (checkbox) {\n if (checked === 'indeterminate') {\n (checkbox as CheckBox).setAttribute('indeterminate', true);\n (checkbox as CheckBox).setAttribute('checked', undefined);\n } else {\n (checkbox as CheckBox).setAttribute('indeterminate', undefined);\n (checkbox as CheckBox).setAttribute('checked', checked);\n }\n }\n}\n\nexport function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, table } = state;\n let source;\n let target;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n // sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n // targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n\n source = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, sourceIndex);\n target = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(target)) {\n sourceIndex = source;\n targetIndex = target;\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n // checkedState[i] = checkedState[i - 1];\n checkedState.set(i.toString(), checkedState.get((i - 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n // checkedState[i] = checkedState[i + 1];\n checkedState.set(i.toString(), checkedState.get((i + 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n }\n } else if (isArray(source) && isArray(target)) {\n sourceIndex = source[source.length - 1];\n targetIndex = target[target.length - 1];\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n const now = [...source];\n now[now.length - 1] = i;\n const last = [...source];\n last[last.length - 1] = i - 1;\n checkedState.set(now.toString(), checkedState.get(last.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n const now = [...source];\n now[now.length - 1] = i;\n const next = [...source];\n next[next.length - 1] = i + 1;\n checkedState.set(now.toString(), checkedState.get(next.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n }\n }\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const vtableOriginIndex = (dataSource as CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction normalizeRecordIndex(recordIndex: number | number[]): number | number[] {\n if (isArray(recordIndex) && recordIndex.length === 1) {\n return recordIndex[0];\n }\n return recordIndex;\n}\n\nfunction setRecordCheckboxState(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n checkedState: Map<string | number, any>\n) {\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n if (checkedState.get(dataIndex)) {\n checkedState.get(dataIndex)[field as string | number] = checked;\n } else {\n checkedState.set(dataIndex, {\n [field as string | number]: checked\n });\n }\n}\n\nfunction clearRecordCheckboxState(records: any[], field: FieldDef, table: BaseTableAPI, parentIndex: number[] = []) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : [index];\n const currentState = getRecordCheckboxState(recordIndex, record, field, table);\n if (currentState !== false) {\n setRecordCheckboxState(recordIndex, field, false, table.stateManager.checkedState);\n }\n\n if (isArray(record?.children)) {\n clearRecordCheckboxState(record.children, field, table, recordIndex);\n }\n });\n}\n\nfunction updateVisibleCheckboxCellByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const bodyRowIndex = (table as ListTableAPI).getBodyRowIndexByRecordIndex?.(recordIndex);\n if (!isNumber(bodyRowIndex) || bodyRowIndex < 0) {\n return;\n }\n\n const row = bodyRowIndex + table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, row, table);\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n}\n\nfunction updateVisibleCheckboxCellsByField(field: FieldDef, checked: boolean | 'indeterminate', table: BaseTableAPI) {\n const bodyStartRow = table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, bodyStartRow, table);\n for (let row = table.columnHeaderLevelCount; row < table.rowCount; row++) {\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n }\n}\n\nfunction renderCheckboxStateUpdate(table: BaseTableAPI) {\n const renderAsync = (table as any).renderAsync;\n if (isFunction(renderAsync)) {\n renderAsync.call(table);\n } else {\n table.render();\n }\n}\n\nfunction updateHeaderCheckboxStateByField(field: FieldDef, table: BaseTableAPI) {\n const fieldKey = field as string | number;\n let hasChecked = false;\n let hasUnchecked = false;\n let hasRecord = false;\n\n traverseRecords((table as any).records, (record, recordIndex) => {\n const state = getRecordCheckboxState(recordIndex, record, field, table);\n hasRecord = true;\n if (state === true) {\n hasChecked = true;\n } else if (state === 'indeterminate') {\n hasChecked = true;\n hasUnchecked = true;\n } else {\n hasUnchecked = true;\n }\n });\n\n const checked = hasRecord && hasChecked && !hasUnchecked ? true : hasChecked ? 'indeterminate' : false;\n table.stateManager.headerCheckedState[fieldKey] = checked;\n updateVisibleHeaderCheckboxCellByField(field, checked, table);\n}\n\nfunction updateVisibleHeaderCheckboxCellByField(\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n for (let row = 0; row < table.columnHeaderLevelCount; row++) {\n for (let col = 0; col < table.colCount; col++) {\n if (table.getHeaderField(col, row) === field && table.getCellType(col, row) === 'checkbox') {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, checked);\n }\n }\n }\n}\n\nfunction getCheckboxColsByField(field: FieldDef, row: number, table: BaseTableAPI): number[] {\n const cols: number[] = [];\n for (let col = 0; col < table.colCount; col++) {\n if (table.isHeader(col, row)) {\n continue;\n }\n const define = table.getBodyColumnDefine(col, row);\n if (define?.field === field && table.getCellType(col, row) === 'checkbox') {\n cols.push(col);\n }\n }\n return cols;\n}\n\nfunction updateChildrenCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean,\n table: BaseTableAPI\n) {\n const record = getRecordByRecordIndex((table as any).records, recordIndex);\n if (!record?.children?.length) {\n return;\n }\n\n record.children.forEach((child: any, childIndex: number) => {\n const childRecordIndex = normalizeRecordIndexToArray(recordIndex).concat(childIndex);\n setRecordCheckboxState(childRecordIndex, field, checked, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(childRecordIndex, field, checked, table);\n updateChildrenCheckboxStateByRecordIndex(childRecordIndex, field, checked, table);\n });\n}\n\nfunction updateParentCheckboxStateByRecordIndex(recordIndex: number | number[], field: FieldDef, table: BaseTableAPI) {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n for (let level = recordIndexPath.length - 1; level > 0; level--) {\n const parentIndex = recordIndexPath.slice(0, level);\n const parentRecord = getRecordByRecordIndex((table as any).records, parentIndex);\n if (!parentRecord?.children?.length) {\n continue;\n }\n\n const childStates: CheckboxStateValue[] = parentRecord.children.map((child: any, childIndex: number) => {\n const childRecordIndex = parentIndex.concat(childIndex);\n const childState = getRecordCheckboxState(childRecordIndex, child, field, table);\n setRecordCheckboxState(childRecordIndex, field, childState, table.stateManager.checkedState);\n return childState;\n });\n const allChecked = childStates.every(state => state === true);\n const allUnchecked = childStates.every(state => state !== true && state !== 'indeterminate');\n const parentState = allChecked ? true : allUnchecked ? false : 'indeterminate';\n setRecordCheckboxState(parentIndex, field, parentState, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(parentIndex, field, parentState, table);\n }\n}\n\nfunction getRecordCheckboxState(\n recordIndex: number | number[],\n record: any,\n field: FieldDef,\n table: BaseTableAPI\n): CheckboxStateValue {\n const fieldKey = field as string | number;\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n const cachedState = table.stateManager.checkedState.get(dataIndex)?.[fieldKey];\n if (isValid(cachedState)) {\n return cachedState;\n }\n\n const value = record?.[fieldKey] as CheckboxRecordValue | undefined;\n if (isObject(value) && isValid((value as { checked?: CheckboxStateValue }).checked)) {\n return (value as { checked?: CheckboxStateValue }).checked;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return false;\n}\n\nfunction getRecordByRecordIndex(records: any[], recordIndex: number | number[]): any {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n let currentRecords = records;\n let record;\n for (let i = 0; i < recordIndexPath.length; i++) {\n record = currentRecords?.[recordIndexPath[i]];\n currentRecords = record?.children;\n }\n return record;\n}\n\nfunction normalizeRecordIndexToArray(recordIndex: number | number[]): number[] {\n return isArray(recordIndex) ? recordIndex : [recordIndex];\n}\n\nfunction traverseRecords(\n records: any[],\n handler: (record: any, recordIndex: number | number[]) => void,\n parentIndex: number[] = []\n) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : index;\n handler(record, recordIndex);\n if (isArray(record?.children)) {\n traverseRecords(record.children, handler, isArray(recordIndex) ? recordIndex : [recordIndex]);\n }\n });\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, FieldDef, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CachedDataSource } from '../../data';\nimport type { CheckBox } from './../../vrender';\n\ntype CheckboxStateValue = boolean | 'indeterminate';\ntype CheckboxRecordValue = CheckboxStateValue | { checked?: CheckboxStateValue };\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const table = state.table;\n const cellRange = table.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n for (let i = cellRange.start.col; i <= cellRange.end.col; i++) {\n for (let j = cellRange.start.row; j <= cellRange.end.row; j++) {\n setSingleCheckedState(i, j, field, checked, state);\n }\n }\n } else {\n setSingleCheckedState(col, row, field, checked, state);\n }\n}\n\nfunction setSingleCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager) {\n state.headerCheckedState[field] = checked;\n if (state.table.internalProps.enableCheckboxCascade) {\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n }\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else if (state.table.internalProps.enableCheckboxCascade && dataIndex.includes(',')) {\n // child record, sync parent record state\n const parentDataIndex = dataIndex.split(',').slice(0, -1).join(','); // get latest parent data index\n if (state.checkedState.has(parentDataIndex) && state.checkedState.get(parentDataIndex)[field] === true) {\n state.checkedState.set(dataIndex, {\n [field]: true\n });\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if ((hd.define.cellType === 'checkbox' || isFunction(hd.define.cellType)) && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || (!state.table.internalProps.enableCheckboxCascade && data?.vtableMerge)) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.getChildByName('checkbox') as any);\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function setCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n setRecordCheckboxState(recordIndex, field, checked, table.stateManager.checkedState);\n\n if (table.internalProps.enableCheckboxCascade && checked !== 'indeterminate') {\n updateChildrenCheckboxStateByRecordIndex(recordIndex, field, checked, table);\n updateParentCheckboxStateByRecordIndex(recordIndex, field, table);\n }\n\n updateVisibleCheckboxCellByRecordIndex(recordIndex, field, checked, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function clearCheckboxState(field: FieldDef, table: BaseTableAPI) {\n if (!isValid(field)) {\n return;\n }\n clearRecordCheckboxState((table as any).records, field, table);\n updateVisibleCheckboxCellsByField(field, false, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function setCellCheckboxStateByAttribute(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.getChildByName('checkbox') as any);\n if (checkbox) {\n if (checked === 'indeterminate') {\n (checkbox as CheckBox).setAttribute('indeterminate', true);\n (checkbox as CheckBox).setAttribute('checked', undefined);\n } else {\n (checkbox as CheckBox).setAttribute('indeterminate', undefined);\n (checkbox as CheckBox).setAttribute('checked', checked);\n }\n }\n}\n\ntype RecordPath = number | number[];\n\nfunction normalizeRecordPath(recordPath: RecordPath): number[] {\n return isArray(recordPath) ? recordPath : [recordPath];\n}\n\nfunction parseCheckboxStateKey(key: string | number): number[] {\n return isNumber(key) ? [key] : key.split(',').map(item => Number(item));\n}\n\nfunction stringifyRecordPath(recordPath: number[]): string {\n return recordPath.toString();\n}\n\nfunction isSameRecordPath(source: number[], target: number[]): boolean {\n return source.length === target.length && source.every((item, index) => item === target[index]);\n}\n\nfunction isSameParentPath(source: number[], target: number[]): boolean {\n if (source.length !== target.length) {\n return false;\n }\n return source.slice(0, -1).every((item, index) => item === target[index]);\n}\n\nfunction isDescendantPath(path: number[], ancestor: number[]): boolean {\n return ancestor.length <= path.length && ancestor.every((item, index) => item === path[index]);\n}\n\nfunction getMovedRecordPath(path: number[], source: number[], target: number[]): number[] {\n return target.concat(path.slice(source.length));\n}\n\nfunction getShiftedSiblingPath(path: number[], parent: number[], sourceIndex: number, targetIndex: number): number[] {\n if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) {\n return path;\n }\n\n const siblingIndex = path[parent.length];\n if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex - 1;\n return shifted;\n }\n if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex + 1;\n return shifted;\n }\n return path;\n}\n\nexport function changeCheckboxOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager) {\n const { checkedState } = state;\n const sourcePath = normalizeRecordPath(sourceRecordPath);\n const targetPath = normalizeRecordPath(targetRecordPath);\n\n // DataSource.changeOrder only reorders records under the same parent; cross-parent drops are ignored here.\n if (isSameRecordPath(sourcePath, targetPath) || !isSameParentPath(sourcePath, targetPath)) {\n return;\n }\n\n const parentPath = sourcePath.slice(0, -1);\n const sourceIndex = sourcePath[sourcePath.length - 1];\n const targetIndex = targetPath[targetPath.length - 1];\n const nextCheckedState = new Map<string | number, Record<string | number, boolean | 'indeterminate'>>();\n\n checkedState.forEach((value, key) => {\n const keyPath = parseCheckboxStateKey(key);\n let nextPath: number[];\n\n if (isDescendantPath(keyPath, sourcePath)) {\n nextPath = getMovedRecordPath(keyPath, sourcePath, targetPath);\n } else {\n nextPath = getShiftedSiblingPath(keyPath, parentPath, sourceIndex, targetIndex);\n }\n\n nextCheckedState.set(stringifyRecordPath(nextPath), value);\n });\n\n checkedState.clear();\n nextCheckedState.forEach((value, key) => {\n checkedState.set(key, value);\n });\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const vtableOriginIndex = (dataSource as CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction normalizeRecordIndex(recordIndex: number | number[]): number | number[] {\n if (isArray(recordIndex) && recordIndex.length === 1) {\n return recordIndex[0];\n }\n return recordIndex;\n}\n\nfunction setRecordCheckboxState(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n checkedState: Map<string | number, any>\n) {\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n if (checkedState.get(dataIndex)) {\n checkedState.get(dataIndex)[field as string | number] = checked;\n } else {\n checkedState.set(dataIndex, {\n [field as string | number]: checked\n });\n }\n}\n\nfunction clearRecordCheckboxState(records: any[], field: FieldDef, table: BaseTableAPI, parentIndex: number[] = []) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : [index];\n const currentState = getRecordCheckboxState(recordIndex, record, field, table);\n if (currentState !== false) {\n setRecordCheckboxState(recordIndex, field, false, table.stateManager.checkedState);\n }\n\n if (isArray(record?.children)) {\n clearRecordCheckboxState(record.children, field, table, recordIndex);\n }\n });\n}\n\nfunction updateVisibleCheckboxCellByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const bodyRowIndex = (table as ListTableAPI).getBodyRowIndexByRecordIndex?.(recordIndex);\n if (!isNumber(bodyRowIndex) || bodyRowIndex < 0) {\n return;\n }\n\n const row = bodyRowIndex + table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, row, table);\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n}\n\nfunction updateVisibleCheckboxCellsByField(field: FieldDef, checked: boolean | 'indeterminate', table: BaseTableAPI) {\n const bodyStartRow = table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, bodyStartRow, table);\n for (let row = table.columnHeaderLevelCount; row < table.rowCount; row++) {\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n }\n}\n\nfunction renderCheckboxStateUpdate(table: BaseTableAPI) {\n const renderAsync = (table as any).renderAsync;\n if (isFunction(renderAsync)) {\n renderAsync.call(table);\n } else {\n table.render();\n }\n}\n\nfunction updateHeaderCheckboxStateByField(field: FieldDef, table: BaseTableAPI) {\n const fieldKey = field as string | number;\n let hasChecked = false;\n let hasUnchecked = false;\n let hasRecord = false;\n\n traverseRecords((table as any).records, (record, recordIndex) => {\n const state = getRecordCheckboxState(recordIndex, record, field, table);\n hasRecord = true;\n if (state === true) {\n hasChecked = true;\n } else if (state === 'indeterminate') {\n hasChecked = true;\n hasUnchecked = true;\n } else {\n hasUnchecked = true;\n }\n });\n\n const checked = hasRecord && hasChecked && !hasUnchecked ? true : hasChecked ? 'indeterminate' : false;\n table.stateManager.headerCheckedState[fieldKey] = checked;\n updateVisibleHeaderCheckboxCellByField(field, checked, table);\n}\n\nfunction updateVisibleHeaderCheckboxCellByField(\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n for (let row = 0; row < table.columnHeaderLevelCount; row++) {\n for (let col = 0; col < table.colCount; col++) {\n if (table.getHeaderField(col, row) === field && table.getCellType(col, row) === 'checkbox') {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, checked);\n }\n }\n }\n}\n\nfunction getCheckboxColsByField(field: FieldDef, row: number, table: BaseTableAPI): number[] {\n const cols: number[] = [];\n for (let col = 0; col < table.colCount; col++) {\n if (table.isHeader(col, row)) {\n continue;\n }\n const define = table.getBodyColumnDefine(col, row);\n if (define?.field === field && table.getCellType(col, row) === 'checkbox') {\n cols.push(col);\n }\n }\n return cols;\n}\n\nfunction updateChildrenCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean,\n table: BaseTableAPI\n) {\n const record = getRecordByRecordIndex((table as any).records, recordIndex);\n if (!record?.children?.length) {\n return;\n }\n\n record.children.forEach((child: any, childIndex: number) => {\n const childRecordIndex = normalizeRecordIndexToArray(recordIndex).concat(childIndex);\n setRecordCheckboxState(childRecordIndex, field, checked, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(childRecordIndex, field, checked, table);\n updateChildrenCheckboxStateByRecordIndex(childRecordIndex, field, checked, table);\n });\n}\n\nfunction updateParentCheckboxStateByRecordIndex(recordIndex: number | number[], field: FieldDef, table: BaseTableAPI) {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n for (let level = recordIndexPath.length - 1; level > 0; level--) {\n const parentIndex = recordIndexPath.slice(0, level);\n const parentRecord = getRecordByRecordIndex((table as any).records, parentIndex);\n if (!parentRecord?.children?.length) {\n continue;\n }\n\n const childStates: CheckboxStateValue[] = parentRecord.children.map((child: any, childIndex: number) => {\n const childRecordIndex = parentIndex.concat(childIndex);\n const childState = getRecordCheckboxState(childRecordIndex, child, field, table);\n setRecordCheckboxState(childRecordIndex, field, childState, table.stateManager.checkedState);\n return childState;\n });\n const allChecked = childStates.every(state => state === true);\n const allUnchecked = childStates.every(state => state !== true && state !== 'indeterminate');\n const parentState = allChecked ? true : allUnchecked ? false : 'indeterminate';\n setRecordCheckboxState(parentIndex, field, parentState, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(parentIndex, field, parentState, table);\n }\n}\n\nfunction getRecordCheckboxState(\n recordIndex: number | number[],\n record: any,\n field: FieldDef,\n table: BaseTableAPI\n): CheckboxStateValue {\n const fieldKey = field as string | number;\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n const cachedState = table.stateManager.checkedState.get(dataIndex)?.[fieldKey];\n if (isValid(cachedState)) {\n return cachedState;\n }\n\n const value = record?.[fieldKey] as CheckboxRecordValue | undefined;\n if (isObject(value) && isValid((value as { checked?: CheckboxStateValue }).checked)) {\n return (value as { checked?: CheckboxStateValue }).checked;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return false;\n}\n\nfunction getRecordByRecordIndex(records: any[], recordIndex: number | number[]): any {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n let currentRecords = records;\n let record;\n for (let i = 0; i < recordIndexPath.length; i++) {\n record = currentRecords?.[recordIndexPath[i]];\n currentRecords = record?.children;\n }\n return record;\n}\n\nfunction normalizeRecordIndexToArray(recordIndex: number | number[]): number[] {\n return isArray(recordIndex) ? recordIndex : [recordIndex];\n}\n\nfunction traverseRecords(\n records: any[],\n handler: (record: any, recordIndex: number | number[]) => void,\n parentIndex: number[] = []\n) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : index;\n handler(record, recordIndex);\n if (isArray(record?.children)) {\n traverseRecords(record.children, handler, isArray(recordIndex) ? recordIndex : [recordIndex]);\n }\n });\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import type { StateManager } from '../state';
2
2
  import type { BaseTableAPI } from '../../ts-types/base-table';
3
+ type RecordPath = number | number[];
3
4
  export declare function setRadioState(col: number, row: number, field: string | number, type: 'column' | 'cell', indexInCell: number | undefined, state: StateManager): void;
4
5
  export declare function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number;
5
6
  export declare function syncRadioState(col: number, row: number, field: string | number, type: 'column' | 'cell', indexInCell: number | undefined, isChecked: boolean, state: StateManager): boolean;
6
7
  export declare function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI): void;
7
- export declare function changeRadioOrder(sourceIndex: number, targetIndex: number, state: StateManager): void;
8
+ export declare function changeRadioOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager): void;
9
+ export {};
@@ -75,19 +75,76 @@ function setCellRadioState(col, row, index, table) {
75
75
  }
76
76
  }
77
77
 
78
- function changeRadioOrder(sourceIndex, targetIndex, state) {
79
- const {radioState: radioState, table: table} = state;
80
- if (table.internalProps.transpose ? (sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0),
81
- targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex),
82
- targetIndex = table.getRecordShowIndexByCell(0, targetIndex)), sourceIndex > targetIndex) {
83
- const sourceRecord = radioState[sourceIndex];
84
- for (let i = sourceIndex; i > targetIndex; i--) radioState[i] = radioState[i - 1];
85
- radioState[targetIndex] = sourceRecord;
86
- } else if (sourceIndex < targetIndex) {
87
- const sourceRecord = radioState[sourceIndex];
88
- for (let i = sourceIndex; i < targetIndex; i++) radioState[i] = radioState[i + 1];
89
- radioState[targetIndex] = sourceRecord;
78
+ function normalizeRecordPath(recordPath) {
79
+ return Array.isArray(recordPath) ? recordPath : [ recordPath ];
80
+ }
81
+
82
+ function parseRecordPathKey(key) {
83
+ return (0, vutils_1.isNumber)(key) ? [ key ] : key.split(",").map((item => Number(item)));
84
+ }
85
+
86
+ function isSameRecordPath(source, target) {
87
+ return source.length === target.length && source.every(((item, index) => item === target[index]));
88
+ }
89
+
90
+ function isSameParentPath(source, target) {
91
+ return source.length === target.length && source.slice(0, -1).every(((item, index) => item === target[index]));
92
+ }
93
+
94
+ function isDescendantPath(path, ancestor) {
95
+ return ancestor.length <= path.length && ancestor.every(((item, index) => item === path[index]));
96
+ }
97
+
98
+ function getMovedRecordPath(path, source, target) {
99
+ return target.concat(path.slice(source.length));
100
+ }
101
+
102
+ function getShiftedSiblingPath(path, parent, sourceIndex, targetIndex) {
103
+ if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) return path;
104
+ const siblingIndex = path[parent.length];
105
+ if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {
106
+ const shifted = [ ...path ];
107
+ return shifted[parent.length] = siblingIndex - 1, shifted;
90
108
  }
109
+ if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {
110
+ const shifted = [ ...path ];
111
+ return shifted[parent.length] = siblingIndex + 1, shifted;
112
+ }
113
+ return path;
114
+ }
115
+
116
+ function getChangedRecordPath(path, sourcePath, targetPath) {
117
+ const parentPath = sourcePath.slice(0, -1), sourceIndex = sourcePath[sourcePath.length - 1], targetIndex = targetPath[targetPath.length - 1];
118
+ return isDescendantPath(path, sourcePath) ? getMovedRecordPath(path, sourcePath, targetPath) : getShiftedSiblingPath(path, parentPath, sourceIndex, targetIndex);
119
+ }
120
+
121
+ function getRadioStateValue(recordPath) {
122
+ return 1 === recordPath.length ? recordPath[0] : recordPath;
123
+ }
124
+
125
+ function getRadioStateKey(recordPath) {
126
+ return recordPath.toString();
127
+ }
128
+
129
+ function changeRadioStateValue(value, sourcePath, targetPath) {
130
+ if ((0, vutils_1.isNumber)(value)) return getRadioStateValue(getChangedRecordPath([ value ], sourcePath, targetPath));
131
+ if (Array.isArray(value)) return getRadioStateValue(getChangedRecordPath(value, sourcePath, targetPath));
132
+ if ((0, vutils_1.isString)(value)) return getRadioStateKey(getChangedRecordPath(parseRecordPathKey(value), sourcePath, targetPath));
133
+ if ((0, vutils_1.isObject)(value)) {
134
+ const nextValue = {};
135
+ return Object.keys(value).forEach((key => {
136
+ const nextPath = getChangedRecordPath(parseRecordPathKey(key), sourcePath, targetPath);
137
+ nextValue[getRadioStateKey(nextPath)] = value[key];
138
+ })), nextValue;
139
+ }
140
+ return value;
141
+ }
142
+
143
+ function changeRadioOrder(sourceRecordPath, targetRecordPath, state) {
144
+ const {radioState: radioState} = state, sourcePath = normalizeRecordPath(sourceRecordPath), targetPath = normalizeRecordPath(targetRecordPath);
145
+ !isSameRecordPath(sourcePath, targetPath) && isSameParentPath(sourcePath, targetPath) && Object.keys(radioState).forEach((field => {
146
+ radioState[field] = changeRadioStateValue(radioState[field], sourcePath, targetPath);
147
+ }));
91
148
  }
92
149
 
93
150
  exports.setRadioState = setRadioState, exports.getCellRadioState = getCellRadioState,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/radio/radio.ts"],"names":[],"mappings":"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","file":"radio.js","sourcesContent":["import { isBoolean, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { ColumnDefine } from '../../ts-types';\nimport type { Radio } from './../../vrender';\n\nexport function setRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n if (type === 'column') {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n } else {\n if (!state.radioState[field]) {\n state.radioState[field] = {};\n }\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n }\n }\n}\n\nexport function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number {\n const define = table.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = table.getCellType(col, row);\n if (isValid(field) && cellType === 'radio') {\n const dataIndex = table.dataSource.getIndexKey(table.getRecordShowIndexByCell(col, row)) as number;\n const columnState = table.stateManager.radioState?.[field as string | number];\n if (isNumber(columnState)) {\n if (columnState === dataIndex) {\n return true;\n }\n } else if (isObject(columnState)) {\n const cellState = (columnState as Record<number, number>)[dataIndex];\n if (isNumber(cellState)) {\n return cellState;\n }\n }\n }\n return false;\n}\n\nexport function syncRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n isChecked: boolean,\n state: StateManager\n): boolean {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n\n if (type === 'column') {\n if (!isValid(state.radioState[field]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n return true;\n } else if (isNumber(state.radioState[field]) && !isNumber(indexInCell)) {\n // column : column\n return state.radioState[field] === dataIndex;\n } else if (isNumber(state.radioState[field]) && isNumber(indexInCell)) {\n // column : cell\n return false;\n } else if (isObject(state.radioState[field]) && !isNumber(indexInCell)) {\n // cell : column\n return false;\n } else if (isObject(state.radioState[field]) && isNumber(indexInCell)) {\n // cell : cell\n return state.radioState[field][dataIndex] === indexInCell;\n }\n } else if (type === 'cell') {\n if (!isValid(state.radioState[field]) && isChecked) {\n state.radioState[field] = {};\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (!isValid(state.radioState[field]?.[dataIndex]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // single : single\n return state.radioState[field][dataIndex];\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // single : multiple\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // multiple : single\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // multiple : multiple\n return state.radioState[field][dataIndex] === indexInCell;\n }\n }\n }\n return isChecked;\n}\n\nexport function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI) {\n const cellGoup = table.scenegraph.getCell(col, row);\n if (!cellGoup) {\n return;\n }\n if (isNumber(index)) {\n const radio = cellGoup.getChildAt(index) as any;\n radio?._handlePointerUp();\n } else {\n const radio = cellGoup.getChildByName('radio') as any;\n radio?._handlePointerUp();\n }\n}\n\nexport function changeRadioOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { radioState, table } = state;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n }\n // if (sourceIndex !== targetIndex) {\n // const sourceRecord = radioState[sourceIndex];\n // radioState[sourceIndex] = radioState[targetIndex];\n // radioState[targetIndex] = sourceRecord;\n // }\n if (sourceIndex > targetIndex) {\n const sourceRecord = radioState[sourceIndex];\n for (let i = sourceIndex; i > targetIndex; i--) {\n radioState[i] = radioState[i - 1];\n }\n radioState[targetIndex] = sourceRecord;\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = radioState[sourceIndex];\n for (let i = sourceIndex; i < targetIndex; i++) {\n radioState[i] = radioState[i + 1];\n }\n radioState[targetIndex] = sourceRecord;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/state/radio/radio.ts"],"names":[],"mappings":"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","file":"radio.js","sourcesContent":["import { isBoolean, isNumber, isObject, isString, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { ColumnDefine } from '../../ts-types';\nimport type { Radio } from './../../vrender';\n\ntype RecordPath = number | number[];\ntype RadioStateValue = boolean | number | string | number[] | Record<string | number, boolean | number>;\n\nexport function setRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n if (type === 'column') {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n } else {\n if (!state.radioState[field]) {\n state.radioState[field] = {};\n }\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n }\n }\n}\n\nexport function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number {\n const define = table.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = table.getCellType(col, row);\n if (isValid(field) && cellType === 'radio') {\n const dataIndex = table.dataSource.getIndexKey(table.getRecordShowIndexByCell(col, row)) as number;\n const columnState = table.stateManager.radioState?.[field as string | number];\n if (isNumber(columnState)) {\n if (columnState === dataIndex) {\n return true;\n }\n } else if (isObject(columnState)) {\n const cellState = (columnState as Record<number, number>)[dataIndex];\n if (isNumber(cellState)) {\n return cellState;\n }\n }\n }\n return false;\n}\n\nexport function syncRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n isChecked: boolean,\n state: StateManager\n): boolean {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n\n if (type === 'column') {\n if (!isValid(state.radioState[field]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n return true;\n } else if (isNumber(state.radioState[field]) && !isNumber(indexInCell)) {\n // column : column\n return state.radioState[field] === dataIndex;\n } else if (isNumber(state.radioState[field]) && isNumber(indexInCell)) {\n // column : cell\n return false;\n } else if (isObject(state.radioState[field]) && !isNumber(indexInCell)) {\n // cell : column\n return false;\n } else if (isObject(state.radioState[field]) && isNumber(indexInCell)) {\n // cell : cell\n return state.radioState[field][dataIndex] === indexInCell;\n }\n } else if (type === 'cell') {\n if (!isValid(state.radioState[field]) && isChecked) {\n state.radioState[field] = {};\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (!isValid(state.radioState[field]?.[dataIndex]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // single : single\n return state.radioState[field][dataIndex];\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // single : multiple\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // multiple : single\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // multiple : multiple\n return state.radioState[field][dataIndex] === indexInCell;\n }\n }\n }\n return isChecked;\n}\n\nexport function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI) {\n const cellGoup = table.scenegraph.getCell(col, row);\n if (!cellGoup) {\n return;\n }\n if (isNumber(index)) {\n const radio = cellGoup.getChildAt(index) as any;\n radio?._handlePointerUp();\n } else {\n const radio = cellGoup.getChildByName('radio') as any;\n radio?._handlePointerUp();\n }\n}\n\nfunction normalizeRecordPath(recordPath: RecordPath): number[] {\n return Array.isArray(recordPath) ? recordPath : [recordPath];\n}\n\nfunction parseRecordPathKey(key: string | number): number[] {\n return isNumber(key) ? [key] : key.split(',').map(item => Number(item));\n}\n\nfunction isSameRecordPath(source: number[], target: number[]): boolean {\n return source.length === target.length && source.every((item, index) => item === target[index]);\n}\n\nfunction isSameParentPath(source: number[], target: number[]): boolean {\n if (source.length !== target.length) {\n return false;\n }\n return source.slice(0, -1).every((item, index) => item === target[index]);\n}\n\nfunction isDescendantPath(path: number[], ancestor: number[]): boolean {\n return ancestor.length <= path.length && ancestor.every((item, index) => item === path[index]);\n}\n\nfunction getMovedRecordPath(path: number[], source: number[], target: number[]): number[] {\n return target.concat(path.slice(source.length));\n}\n\nfunction getShiftedSiblingPath(path: number[], parent: number[], sourceIndex: number, targetIndex: number): number[] {\n if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) {\n return path;\n }\n\n const siblingIndex = path[parent.length];\n if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex - 1;\n return shifted;\n }\n if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex + 1;\n return shifted;\n }\n return path;\n}\n\nfunction getChangedRecordPath(path: number[], sourcePath: number[], targetPath: number[]): number[] {\n const parentPath = sourcePath.slice(0, -1);\n const sourceIndex = sourcePath[sourcePath.length - 1];\n const targetIndex = targetPath[targetPath.length - 1];\n\n if (isDescendantPath(path, sourcePath)) {\n return getMovedRecordPath(path, sourcePath, targetPath);\n }\n return getShiftedSiblingPath(path, parentPath, sourceIndex, targetIndex);\n}\n\nfunction getRadioStateValue(recordPath: number[]): number | number[] {\n return recordPath.length === 1 ? recordPath[0] : recordPath;\n}\n\nfunction getRadioStateKey(recordPath: number[]): string {\n return recordPath.toString();\n}\n\nfunction changeRadioStateValue(value: RadioStateValue, sourcePath: number[], targetPath: number[]): RadioStateValue {\n if (isNumber(value)) {\n return getRadioStateValue(getChangedRecordPath([value], sourcePath, targetPath));\n }\n if (Array.isArray(value)) {\n return getRadioStateValue(getChangedRecordPath(value, sourcePath, targetPath));\n }\n if (isString(value)) {\n return getRadioStateKey(getChangedRecordPath(parseRecordPathKey(value), sourcePath, targetPath));\n }\n if (isObject(value)) {\n const nextValue: Record<string | number, boolean | number> = {};\n Object.keys(value).forEach(key => {\n const nextPath = getChangedRecordPath(parseRecordPathKey(key), sourcePath, targetPath);\n nextValue[getRadioStateKey(nextPath)] = value[key];\n });\n return nextValue;\n }\n return value;\n}\n\nexport function changeRadioOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager) {\n const { radioState } = state;\n const sourcePath = normalizeRecordPath(sourceRecordPath);\n const targetPath = normalizeRecordPath(targetRecordPath);\n\n if (isSameRecordPath(sourcePath, targetPath) || !isSameParentPath(sourcePath, targetPath)) {\n return;\n }\n\n Object.keys(radioState).forEach(field => {\n radioState[field] = changeRadioStateValue(radioState[field] as RadioStateValue, sourcePath, targetPath);\n });\n}\n"]}
@@ -133,7 +133,7 @@ export declare class StateManager {
133
133
  headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
134
134
  _checkboxCellTypeFields: (string | number)[];
135
135
  _headerCheckFuncs: Record<string | number, Function>;
136
- radioState: Record<string | number, boolean | number | Record<number, number>>;
136
+ radioState: Record<string | number, boolean | number | string | number[] | Record<string | number, boolean | number>>;
137
137
  resetInteractionState: (this: any, ...args: any) => any;
138
138
  constructor(table: BaseTableAPI);
139
139
  initState(): void;
@@ -209,7 +209,8 @@ export declare class StateManager {
209
209
  initLeftRecordsCheckState(records: any[]): void;
210
210
  setRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined): void;
211
211
  syncRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined, isChecked: boolean): boolean;
212
- changeCheckboxAndRadioOrder(sourceIndex: number, targetIndex: number): void;
212
+ changeCheckboxOrder(sourceRecordPath: number | number[], targetRecordPath: number | number[]): void;
213
+ changeRadioOrder(sourceRecordPath: number | number[], targetRecordPath: number | number[]): void;
213
214
  setCustomSelectRanges(customSelectRanges: {
214
215
  range: CellRange;
215
216
  style: CustomSelectionStyle;
@@ -260,6 +260,7 @@ class StateManager {
260
260
  placement: inlineIcon.attribute.tooltip.placement
261
261
  },
262
262
  style: Object.assign({}, null === (_e = this.table.internalProps.theme) || void 0 === _e ? void 0 : _e.tooltipStyle, null === (_f = inlineIcon.tooltip) || void 0 === _f ? void 0 : _f.style, null === (_h = null === (_g = inlineIcon.attribute) || void 0 === _g ? void 0 : _g.tooltip) || void 0 === _h ? void 0 : _h.style),
263
+ appearDelay: inlineIcon.attribute.tooltip.appearDelay,
263
264
  disappearDelay: inlineIcon.attribute.tooltip.disappearDelay
264
265
  };
265
266
  this.table.internalProps.tooltipHandler.isBinded(tooltipOptions) || this.table.showTooltip(col, row, tooltipOptions);
@@ -860,9 +861,11 @@ class StateManager {
860
861
  syncRadioState(col, row, field, radioType, indexInCell, isChecked) {
861
862
  return (0, radio_1.syncRadioState)(col, row, field, radioType, indexInCell, isChecked, this);
862
863
  }
863
- changeCheckboxAndRadioOrder(sourceIndex, targetIndex) {
864
- this.checkedState.size && (0, checkbox_1.changeCheckboxOrder)(sourceIndex, targetIndex, this),
865
- this.radioState.length && (0, radio_1.changeRadioOrder)(sourceIndex, targetIndex, this);
864
+ changeCheckboxOrder(sourceRecordPath, targetRecordPath) {
865
+ this.checkedState.size && (0, checkbox_1.changeCheckboxOrder)(sourceRecordPath, targetRecordPath, this);
866
+ }
867
+ changeRadioOrder(sourceRecordPath, targetRecordPath) {
868
+ Object.keys(this.radioState).length && (0, radio_1.changeRadioOrder)(sourceRecordPath, targetRecordPath, this);
866
869
  }
867
870
  setCustomSelectRanges(customSelectRanges) {
868
871
  (0, custom_select_1.deletaCustomSelectRanges)(this), (0, custom_select_1.addCustomSelectRanges)(customSelectRanges, this);