@visactor/vtable 0.20.4-alpha.3 → 0.21.1

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 (239) hide show
  1. package/cjs/ListTable.d.ts +9 -2
  2. package/cjs/ListTable.js +25 -9
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +7 -1
  5. package/cjs/PivotChart.js +7 -7
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.d.ts +9 -2
  8. package/cjs/PivotTable.js +26 -11
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/body-helper/style/Style.d.ts +3 -0
  11. package/cjs/body-helper/style/Style.js +16 -9
  12. package/cjs/body-helper/style/Style.js.map +1 -1
  13. package/cjs/core/BaseTable.d.ts +7 -1
  14. package/cjs/core/BaseTable.js +4 -2
  15. package/cjs/core/BaseTable.js.map +1 -1
  16. package/cjs/core/tableHelper.js +3 -1
  17. package/cjs/core/tableHelper.js.map +1 -1
  18. package/cjs/edit/edit-manager.js +3 -1
  19. package/cjs/edit/edit-manager.js.map +1 -1
  20. package/cjs/event/listener/container-dom.js +58 -12
  21. package/cjs/event/listener/container-dom.js.map +1 -1
  22. package/cjs/event/listener/table-group.js +2 -1
  23. package/cjs/event/listener/table-group.js.map +1 -1
  24. package/cjs/header-helper/style/Style.d.ts +3 -0
  25. package/cjs/header-helper/style/Style.js +15 -8
  26. package/cjs/header-helper/style/Style.js.map +1 -1
  27. package/cjs/index.d.ts +3 -2
  28. package/cjs/index.js +16 -2
  29. package/cjs/index.js.map +1 -1
  30. package/cjs/layout/pivot-header-layout.d.ts +3 -2
  31. package/cjs/layout/pivot-header-layout.js +24 -18
  32. package/cjs/layout/pivot-header-layout.js.map +1 -1
  33. package/cjs/layout/row-height-map.d.ts +1 -0
  34. package/cjs/layout/row-height-map.js +25 -1
  35. package/cjs/layout/row-height-map.js.map +1 -1
  36. package/cjs/layout/simple-header-layout.d.ts +3 -3
  37. package/cjs/layout/simple-header-layout.js +22 -23
  38. package/cjs/layout/simple-header-layout.js.map +1 -1
  39. package/cjs/plugins/custom-cell-style.js +11 -8
  40. package/cjs/plugins/custom-cell-style.js.map +1 -1
  41. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +29 -7
  42. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  43. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +5 -2
  44. package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  45. package/cjs/scenegraph/group-creater/cell-helper.js +11 -4
  46. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  47. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +22 -19
  48. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +21 -18
  50. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  51. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +7 -7
  52. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  53. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +21 -18
  54. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  55. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +11 -10
  56. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  57. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +7 -7
  58. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  59. package/cjs/scenegraph/group-creater/progress/default-width-height.d.ts +3 -0
  60. package/cjs/scenegraph/group-creater/progress/default-width-height.js +24 -0
  61. package/cjs/scenegraph/group-creater/progress/default-width-height.js.map +1 -0
  62. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +8 -4
  63. package/cjs/scenegraph/group-creater/progress/proxy.js +50 -10
  64. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  65. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +1 -1
  66. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +14 -16
  67. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  68. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +1 -1
  69. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +28 -30
  70. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  71. package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js +1 -1
  72. package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -1
  73. package/cjs/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
  74. package/cjs/scenegraph/layout/compute-row-height.js +3 -2
  75. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  76. package/cjs/scenegraph/layout/move-cell.d.ts +1 -2
  77. package/cjs/scenegraph/layout/move-cell.js +3 -16
  78. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  79. package/cjs/scenegraph/scenegraph.d.ts +4 -4
  80. package/cjs/scenegraph/scenegraph.js +12 -7
  81. package/cjs/scenegraph/scenegraph.js.map +1 -1
  82. package/cjs/scenegraph/stick-text/index.js +1 -1
  83. package/cjs/scenegraph/stick-text/index.js.map +1 -1
  84. package/cjs/scenegraph/utils/cell-border-stroke-width.d.ts +3 -0
  85. package/cjs/scenegraph/utils/cell-border-stroke-width.js +16 -0
  86. package/cjs/scenegraph/utils/cell-border-stroke-width.js.map +1 -0
  87. package/cjs/scenegraph/utils/get-prop.js +3 -3
  88. package/cjs/scenegraph/utils/get-prop.js.map +1 -1
  89. package/cjs/scenegraph/utils/text-icon-layout.js +9 -3
  90. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  91. package/cjs/scenegraph/utils/text-measure.d.ts +4 -2
  92. package/cjs/scenegraph/utils/text-measure.js +20 -5
  93. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  94. package/cjs/state/cell-move/index.js +6 -6
  95. package/cjs/state/cell-move/index.js.map +1 -1
  96. package/cjs/state/state.js +2 -2
  97. package/cjs/state/state.js.map +1 -1
  98. package/cjs/themes/theme.d.ts +3 -0
  99. package/cjs/themes/theme.js +20 -0
  100. package/cjs/themes/theme.js.map +1 -1
  101. package/cjs/tools/NumberMap.d.ts +1 -0
  102. package/cjs/tools/NumberMap.js +21 -0
  103. package/cjs/tools/NumberMap.js.map +1 -1
  104. package/cjs/ts-types/base-table.d.ts +7 -0
  105. package/cjs/ts-types/base-table.js.map +1 -1
  106. package/cjs/ts-types/column/style.d.ts +1 -0
  107. package/cjs/ts-types/column/style.js.map +1 -1
  108. package/cjs/ts-types/common.d.ts +5 -3
  109. package/cjs/ts-types/common.js.map +1 -1
  110. package/cjs/ts-types/customElement.d.ts +2 -0
  111. package/cjs/ts-types/customElement.js.map +1 -1
  112. package/cjs/ts-types/style-define.d.ts +2 -0
  113. package/cjs/ts-types/style-define.js.map +1 -1
  114. package/cjs/ts-types/table-engine.d.ts +1 -1
  115. package/cjs/ts-types/table-engine.js.map +1 -1
  116. package/cjs/ts-types/theme.d.ts +3 -0
  117. package/cjs/ts-types/theme.js.map +1 -1
  118. package/cjs/vrender.js.map +1 -1
  119. package/dist/vtable.js +4376 -2132
  120. package/dist/vtable.min.js +2 -2
  121. package/es/ListTable.d.ts +9 -2
  122. package/es/ListTable.js +25 -9
  123. package/es/ListTable.js.map +1 -1
  124. package/es/PivotChart.d.ts +7 -1
  125. package/es/PivotChart.js +7 -7
  126. package/es/PivotChart.js.map +1 -1
  127. package/es/PivotTable.d.ts +9 -2
  128. package/es/PivotTable.js +27 -12
  129. package/es/PivotTable.js.map +1 -1
  130. package/es/body-helper/style/Style.d.ts +3 -0
  131. package/es/body-helper/style/Style.js +16 -9
  132. package/es/body-helper/style/Style.js.map +1 -1
  133. package/es/core/BaseTable.d.ts +7 -1
  134. package/es/core/BaseTable.js +4 -2
  135. package/es/core/BaseTable.js.map +1 -1
  136. package/es/core/tableHelper.js +3 -1
  137. package/es/core/tableHelper.js.map +1 -1
  138. package/es/edit/edit-manager.js +3 -1
  139. package/es/edit/edit-manager.js.map +1 -1
  140. package/es/event/listener/container-dom.js +57 -13
  141. package/es/event/listener/container-dom.js.map +1 -1
  142. package/es/event/listener/table-group.js +1 -1
  143. package/es/event/listener/table-group.js.map +1 -1
  144. package/es/header-helper/style/Style.d.ts +3 -0
  145. package/es/header-helper/style/Style.js +15 -8
  146. package/es/header-helper/style/Style.js.map +1 -1
  147. package/es/index.d.ts +3 -2
  148. package/es/index.js +4 -2
  149. package/es/index.js.map +1 -1
  150. package/es/layout/pivot-header-layout.d.ts +3 -2
  151. package/es/layout/pivot-header-layout.js +24 -18
  152. package/es/layout/pivot-header-layout.js.map +1 -1
  153. package/es/layout/row-height-map.d.ts +1 -0
  154. package/es/layout/row-height-map.js +25 -1
  155. package/es/layout/row-height-map.js.map +1 -1
  156. package/es/layout/simple-header-layout.d.ts +3 -3
  157. package/es/layout/simple-header-layout.js +22 -23
  158. package/es/layout/simple-header-layout.js.map +1 -1
  159. package/es/plugins/custom-cell-style.js +11 -8
  160. package/es/plugins/custom-cell-style.js.map +1 -1
  161. package/es/scenegraph/graphic/contributions/group-contribution-render.js +29 -6
  162. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  163. package/es/scenegraph/graphic/contributions/rect-contribution-render.js +5 -2
  164. package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
  165. package/es/scenegraph/group-creater/cell-helper.js +11 -4
  166. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  167. package/es/scenegraph/group-creater/cell-type/chart-cell.js +23 -18
  168. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  169. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +22 -17
  170. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  171. package/es/scenegraph/group-creater/cell-type/image-cell.js +8 -6
  172. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  173. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +22 -17
  174. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  175. package/es/scenegraph/group-creater/cell-type/text-cell.js +11 -9
  176. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  177. package/es/scenegraph/group-creater/cell-type/video-cell.js +8 -6
  178. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  179. package/es/scenegraph/group-creater/progress/default-width-height.d.ts +3 -0
  180. package/es/scenegraph/group-creater/progress/default-width-height.js +18 -0
  181. package/es/scenegraph/group-creater/progress/default-width-height.js.map +1 -0
  182. package/es/scenegraph/group-creater/progress/proxy.d.ts +8 -4
  183. package/es/scenegraph/group-creater/progress/proxy.js +51 -11
  184. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  185. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +1 -1
  186. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +14 -16
  187. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  188. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +1 -1
  189. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +28 -31
  190. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  191. package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js +1 -1
  192. package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -1
  193. package/es/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
  194. package/es/scenegraph/layout/compute-row-height.js +3 -1
  195. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  196. package/es/scenegraph/layout/move-cell.d.ts +1 -2
  197. package/es/scenegraph/layout/move-cell.js +3 -16
  198. package/es/scenegraph/layout/move-cell.js.map +1 -1
  199. package/es/scenegraph/scenegraph.d.ts +4 -4
  200. package/es/scenegraph/scenegraph.js +12 -7
  201. package/es/scenegraph/scenegraph.js.map +1 -1
  202. package/es/scenegraph/stick-text/index.js +1 -1
  203. package/es/scenegraph/stick-text/index.js.map +1 -1
  204. package/es/scenegraph/utils/cell-border-stroke-width.d.ts +3 -0
  205. package/es/scenegraph/utils/cell-border-stroke-width.js +10 -0
  206. package/es/scenegraph/utils/cell-border-stroke-width.js.map +1 -0
  207. package/es/scenegraph/utils/get-prop.js +3 -3
  208. package/es/scenegraph/utils/get-prop.js.map +1 -1
  209. package/es/scenegraph/utils/text-icon-layout.js +9 -3
  210. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  211. package/es/scenegraph/utils/text-measure.d.ts +4 -2
  212. package/es/scenegraph/utils/text-measure.js +19 -5
  213. package/es/scenegraph/utils/text-measure.js.map +1 -1
  214. package/es/state/cell-move/index.js +6 -6
  215. package/es/state/cell-move/index.js.map +1 -1
  216. package/es/state/state.js +2 -2
  217. package/es/state/state.js.map +1 -1
  218. package/es/themes/theme.d.ts +3 -0
  219. package/es/themes/theme.js +20 -0
  220. package/es/themes/theme.js.map +1 -1
  221. package/es/tools/NumberMap.d.ts +1 -0
  222. package/es/tools/NumberMap.js +21 -0
  223. package/es/tools/NumberMap.js.map +1 -1
  224. package/es/ts-types/base-table.d.ts +7 -0
  225. package/es/ts-types/base-table.js.map +1 -1
  226. package/es/ts-types/column/style.d.ts +1 -0
  227. package/es/ts-types/column/style.js.map +1 -1
  228. package/es/ts-types/common.d.ts +5 -3
  229. package/es/ts-types/common.js.map +1 -1
  230. package/es/ts-types/customElement.d.ts +2 -0
  231. package/es/ts-types/customElement.js.map +1 -1
  232. package/es/ts-types/style-define.d.ts +2 -0
  233. package/es/ts-types/style-define.js.map +1 -1
  234. package/es/ts-types/table-engine.d.ts +1 -1
  235. package/es/ts-types/table-engine.js.map +1 -1
  236. package/es/ts-types/theme.d.ts +3 -0
  237. package/es/ts-types/theme.js.map +1 -1
  238. package/es/vrender.js.map +1 -1
  239. package/package.json +10 -10
@@ -30,4 +30,5 @@ export declare class NumberRangeMap {
30
30
  delLast(): void;
31
31
  delete(position: number): void;
32
32
  adjustOrder(sourceIndex: number, targetIndex: number, moveCount: number): void;
33
+ exchangeOrder(sourceIndex: number, sourceCount: number, targetIndex: number, targetCount: number, insertIndex: number): void;
33
34
  }
@@ -92,7 +92,10 @@ class NumberRangeMap {
92
92
  }), 0));
93
93
  }
94
94
  dealDiffenence() {
95
- for (const [sumPos, sum] of this.cumulativeSum) for (const [difPos, difference] of this.difference) sumPos >= difPos && this.cumulativeSum.set(sumPos, sum + difference);
95
+ for (const [sumPos, sum] of this.cumulativeSum) for (const [difPos, difference] of this.difference) if (sumPos >= difPos) {
96
+ const oldSum = this.cumulativeSum.get(sumPos);
97
+ this.cumulativeSum.set(sumPos, oldSum + difference);
98
+ }
96
99
  this.difference.clear();
97
100
  }
98
101
  insert(position, value) {
@@ -132,6 +135,27 @@ class NumberRangeMap {
132
135
  for (let i = 0; i < moveCount; i++) this.put(targetIndex + i, sourceVals[i]);
133
136
  }
134
137
  }
138
+ exchangeOrder(sourceIndex, sourceCount, targetIndex, targetCount, insertIndex) {
139
+ const {_keys: keys} = this;
140
+ if (this._sorted || (keys.sort(((a, b) => a < b ? -1 : a > b ? 1 : 0)), this._sorted = !0),
141
+ sourceIndex > targetIndex) {
142
+ const targetVals = [], sourceVals = [];
143
+ for (let i = indexFirst(keys, targetIndex); i < sourceIndex + sourceCount; i++) {
144
+ const key = keys[i];
145
+ key >= sourceIndex && key < sourceIndex + sourceCount ? sourceVals.push(this.get(key)) : targetVals.push(this.get(key));
146
+ }
147
+ for (let i = 0; i < sourceCount; i++) this.put(insertIndex + i, sourceVals[i]);
148
+ for (let i = 0; i < targetVals.length; i++) this.put(insertIndex + sourceCount + i, targetVals[i]);
149
+ } else {
150
+ const targetVals = [], sourceVals = [];
151
+ for (let i = indexFirst(keys, sourceIndex); i < targetIndex + targetCount; i++) {
152
+ const key = keys[i];
153
+ key >= sourceIndex && key < sourceIndex + sourceCount ? sourceVals.push(this.get(key)) : targetVals.push(this.get(key));
154
+ }
155
+ for (let i = 0; i < sourceCount; i++) this.put(insertIndex + i, sourceVals[i]);
156
+ for (let i = 0; i < targetVals.length; i++) this.put(sourceIndex + i, targetVals[i]);
157
+ }
158
+ }
135
159
  }
136
160
 
137
161
  function indexFirst(arr, elm) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/row-height-map.ts"],"names":[],"mappings":"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","file":"row-height-map.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport class NumberRangeMap {\n data: Map<number, number>;\n cumulativeSum: Map<number, number>;\n difference: Map<number, number>;\n totalSum: number;\n table: BaseTableAPI;\n isUpdate = false;\n private _keys: number[] = [];\n private _sorted = false;\n\n constructor(table: BaseTableAPI) {\n this.data = new Map();\n this._keys.length = 0;\n this.cumulativeSum = new Map();\n this.difference = new Map();\n this.totalSum = 0;\n this.table = table;\n }\n\n get length() {\n return this.data.size;\n }\n\n clear() {\n this._keys = [];\n this.data.clear();\n this.cumulativeSum.clear();\n this.difference.clear();\n this.totalSum = 0;\n }\n\n clearRange() {\n this.cumulativeSum.clear();\n this.difference.clear();\n }\n\n add(position: number, value: number) {\n const defaultValue = this.table.getRowHeight(position);\n if (!this.data.has(position)) {\n this._keys.push(position);\n this._sorted = false;\n }\n this.data.set(position, value);\n this.totalSum += value;\n // this.updateCumulativeSum(position, value);\n this.updateDifference(position, value - defaultValue);\n }\n\n remove(position: number) {\n if (this.data.has(position)) {\n const value = this.data.get(position);\n this.data.delete(position);\n const index = this._keys.indexOf(position);\n if (index !== -1) {\n this._keys.splice(index, 1); // 使用 splice() 方法删除指定索引位置的元素\n }\n this.totalSum -= value;\n const defaultValue = this.table.getRowHeight(position);\n // this.updateCumulativeSum(position, -value);\n this.updateDifference(position, defaultValue - value);\n }\n }\n\n put(position: number, newValue: number) {\n if (this.data.has(position)) {\n const oldValue = this.data.get(position);\n this.data.set(position, newValue);\n const difference = newValue - oldValue;\n this.totalSum += difference;\n // this.updateCumulativeSum(position, difference);\n this.updateDifference(position, difference);\n } else {\n this.add(position, newValue);\n }\n }\n\n get(position: number) {\n return this.data.get(position);\n }\n\n has(position: number) {\n return this.data.has(position);\n }\n\n private _sort() {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n }\n\n updateDifference(position: number, difference: number) {\n const oldDifference = this.difference.get(position) ?? 0;\n this.difference.set(position, oldDifference + difference);\n this.update();\n }\n\n getSumInRange(start: number, end: number) {\n return this.calculatePrefixSum(end) - this.calculatePrefixSum(start - 1);\n }\n\n updateCumulativeSum(position: number, difference: number) {\n // 更新累加和\n for (const [pos, sum] of this.cumulativeSum) {\n if (pos >= position) {\n this.cumulativeSum.set(pos, sum + difference);\n }\n }\n }\n\n calculatePrefixSum(position: number) {\n if (position < 0) {\n return 0;\n }\n if (this.cumulativeSum.has(position)) {\n let cache = this.cumulativeSum.get(position);\n for (const [pos, difference] of this.difference) {\n if (pos <= position) {\n cache += difference;\n }\n }\n return cache;\n }\n\n this.dealDiffenence();\n return this.getCumulativeSum(position);\n }\n\n getCumulativeSum(position: number) {\n let sum = 0;\n for (let i = position; i >= 0; i--) {\n if (this.cumulativeSum.has(i)) {\n sum += this.cumulativeSum.get(i);\n break;\n } else {\n sum += this.data.get(i) ?? this.table.getRowHeight(i);\n }\n }\n this.cumulativeSum.set(position, sum);\n return sum;\n }\n\n update() {\n if (this.isUpdate) {\n return;\n }\n this.isUpdate = true;\n setTimeout(() => {\n this.dealDiffenence();\n this.isUpdate = false;\n }, 0);\n }\n\n dealDiffenence() {\n for (const [sumPos, sum] of this.cumulativeSum) {\n for (const [difPos, difference] of this.difference) {\n if (sumPos >= difPos) {\n this.cumulativeSum.set(sumPos, sum + difference);\n }\n }\n }\n\n this.difference.clear();\n }\n\n // add and reorder\n insert(position: number, value?: number) {\n const lastIndex = this.getLastIndex() + 1;\n this.adjustOrder(position, position + 1, lastIndex - position);\n if (isValid(value)) {\n this.put(position, value);\n }\n }\n\n getLastIndex() {\n this._sort();\n return this._keys[this._keys.length - 1];\n }\n\n delLast() {\n const lastIndex = this.getLastIndex();\n this.remove(lastIndex);\n }\n\n // del and reorder\n delete(position: number) {\n if (!this.has(position)) {\n return;\n }\n const lastIndex = this.getLastIndex();\n\n this.adjustOrder(position + 1, position, lastIndex - position);\n this.delLast();\n }\n\n /**\n * 将sourceIndex位置开始 往后moveCount个值 调整到targetIndex位置处\n * @param sourceIndex\n * @param targetIndex\n * @param moveCount\n */\n adjustOrder(sourceIndex: number, targetIndex: number, moveCount: number) {\n this.clearRange();\n this._sort();\n const { _keys: keys } = this;\n\n if (sourceIndex > targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex + moveCount - 1); i >= 0; i--) {\n const key = keys[i];\n if (key >= sourceIndex) {\n sourceVals.push(this.get(key));\n } else if (targetIndex <= key && key < sourceIndex) {\n this.put(key + moveCount, this.get(key));\n } else if (key < targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[moveCount - 1 - i]);\n }\n }\n const { length } = keys;\n if (sourceIndex < targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < length; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + moveCount) {\n sourceVals.push(this.get(key));\n } else if (sourceIndex + moveCount <= key && key <= targetIndex) {\n this.put(key - moveCount, this.get(key));\n } else if (key > targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[i]);\n }\n }\n }\n}\n\nfunction indexFirst(arr: number[], elm: number): number {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const i = Math.floor((low + high) / 2);\n if (arr[i] === elm) {\n return i;\n } else if (arr[i] > elm) {\n high = i - 1;\n } else {\n low = i + 1;\n }\n }\n return high < 0 ? 0 : high;\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/row-height-map.ts"],"names":[],"mappings":"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","file":"row-height-map.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport class NumberRangeMap {\n data: Map<number, number>;\n cumulativeSum: Map<number, number>;\n difference: Map<number, number>;\n totalSum: number;\n table: BaseTableAPI;\n isUpdate = false;\n private _keys: number[] = [];\n private _sorted = false;\n\n constructor(table: BaseTableAPI) {\n this.data = new Map();\n this._keys.length = 0;\n this.cumulativeSum = new Map();\n this.difference = new Map();\n this.totalSum = 0;\n this.table = table;\n }\n\n get length() {\n return this.data.size;\n }\n\n clear() {\n this._keys = [];\n this.data.clear();\n this.cumulativeSum.clear();\n this.difference.clear();\n this.totalSum = 0;\n }\n\n clearRange() {\n this.cumulativeSum.clear();\n this.difference.clear();\n }\n\n add(position: number, value: number) {\n const defaultValue = this.table.getRowHeight(position);\n if (!this.data.has(position)) {\n this._keys.push(position);\n this._sorted = false;\n }\n this.data.set(position, value);\n this.totalSum += value;\n // this.updateCumulativeSum(position, value);\n this.updateDifference(position, value - defaultValue);\n }\n\n remove(position: number) {\n if (this.data.has(position)) {\n const value = this.data.get(position);\n this.data.delete(position);\n const index = this._keys.indexOf(position);\n if (index !== -1) {\n this._keys.splice(index, 1); // 使用 splice() 方法删除指定索引位置的元素\n }\n this.totalSum -= value;\n const defaultValue = this.table.getRowHeight(position);\n // this.updateCumulativeSum(position, -value);\n this.updateDifference(position, defaultValue - value);\n }\n }\n\n put(position: number, newValue: number) {\n if (this.data.has(position)) {\n const oldValue = this.data.get(position);\n this.data.set(position, newValue);\n const difference = newValue - oldValue;\n this.totalSum += difference;\n // this.updateCumulativeSum(position, difference);\n this.updateDifference(position, difference);\n } else {\n this.add(position, newValue);\n }\n }\n\n get(position: number) {\n return this.data.get(position);\n }\n\n has(position: number) {\n return this.data.has(position);\n }\n\n private _sort() {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n }\n\n updateDifference(position: number, difference: number) {\n const oldDifference = this.difference.get(position) ?? 0;\n this.difference.set(position, oldDifference + difference);\n this.update();\n }\n\n getSumInRange(start: number, end: number) {\n return this.calculatePrefixSum(end) - this.calculatePrefixSum(start - 1);\n }\n\n updateCumulativeSum(position: number, difference: number) {\n // 更新累加和\n for (const [pos, sum] of this.cumulativeSum) {\n if (pos >= position) {\n this.cumulativeSum.set(pos, sum + difference);\n }\n }\n }\n\n calculatePrefixSum(position: number) {\n if (position < 0) {\n return 0;\n }\n if (this.cumulativeSum.has(position)) {\n let cache = this.cumulativeSum.get(position);\n for (const [pos, difference] of this.difference) {\n if (pos <= position) {\n cache += difference;\n }\n }\n return cache;\n }\n\n this.dealDiffenence();\n return this.getCumulativeSum(position);\n }\n\n getCumulativeSum(position: number) {\n let sum = 0;\n for (let i = position; i >= 0; i--) {\n if (this.cumulativeSum.has(i)) {\n sum += this.cumulativeSum.get(i);\n break;\n } else {\n sum += this.data.get(i) ?? this.table.getRowHeight(i);\n }\n // if (i === position && this.cumulativeSum.has(i + 1)) {\n // sum += this.cumulativeSum.get(i + 1) - (this.data.get(i + 1) ?? this.table.getRowHeight(i + 1));\n // break;\n // }\n }\n this.cumulativeSum.set(position, sum);\n return sum;\n }\n\n update() {\n if (this.isUpdate) {\n return;\n }\n this.isUpdate = true;\n setTimeout(() => {\n this.dealDiffenence();\n this.isUpdate = false;\n }, 0);\n }\n\n dealDiffenence() {\n for (const [sumPos, sum] of this.cumulativeSum) {\n for (const [difPos, difference] of this.difference) {\n if (sumPos >= difPos) {\n const oldSum = this.cumulativeSum.get(sumPos);\n this.cumulativeSum.set(sumPos, oldSum + difference);\n }\n }\n }\n\n this.difference.clear();\n }\n\n // add and reorder\n insert(position: number, value?: number) {\n const lastIndex = this.getLastIndex() + 1;\n this.adjustOrder(position, position + 1, lastIndex - position);\n if (isValid(value)) {\n this.put(position, value);\n }\n }\n\n getLastIndex() {\n this._sort();\n return this._keys[this._keys.length - 1];\n }\n\n delLast() {\n const lastIndex = this.getLastIndex();\n this.remove(lastIndex);\n }\n\n // del and reorder\n delete(position: number) {\n if (!this.has(position)) {\n return;\n }\n const lastIndex = this.getLastIndex();\n\n this.adjustOrder(position + 1, position, lastIndex - position);\n this.delLast();\n }\n\n /**\n * 将sourceIndex位置开始 往后moveCount个值 调整到targetIndex位置处\n * @param sourceIndex\n * @param targetIndex\n * @param moveCount\n */\n adjustOrder(sourceIndex: number, targetIndex: number, moveCount: number) {\n this.clearRange();\n this._sort();\n const { _keys: keys } = this;\n\n if (sourceIndex > targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex + moveCount - 1); i >= 0; i--) {\n const key = keys[i];\n if (key >= sourceIndex) {\n sourceVals.push(this.get(key));\n } else if (targetIndex <= key && key < sourceIndex) {\n this.put(key + moveCount, this.get(key));\n } else if (key < targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[moveCount - 1 - i]);\n }\n }\n const { length } = keys;\n if (sourceIndex < targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < length; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + moveCount) {\n sourceVals.push(this.get(key));\n } else if (sourceIndex + moveCount <= key && key <= targetIndex) {\n this.put(key - moveCount, this.get(key));\n } else if (key > targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[i]);\n }\n }\n }\n\n exchangeOrder(\n sourceIndex: number,\n sourceCount: number,\n targetIndex: number,\n targetCount: number,\n insertIndex: number\n ) {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n if (sourceIndex > targetIndex) {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, targetIndex); i < sourceIndex + sourceCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(insertIndex + sourceCount + i, targetVals[i]);\n }\n } else {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < targetIndex + targetCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(sourceIndex + i, targetVals[i]);\n }\n }\n }\n}\n\nfunction indexFirst(arr: number[], elm: number): number {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const i = Math.floor((low + high) / 2);\n if (arr[i] === elm) {\n return i;\n } else if (arr[i] > elm) {\n high = i - 1;\n } else {\n low = i + 1;\n }\n }\n return high < 0 ? 0 : high;\n}\n"]}
@@ -79,7 +79,6 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
79
79
  getHeaderCellAddressByField(field: string): CellAddress | undefined;
80
80
  getBody(col: number, _row: number): ColumnData;
81
81
  getBodyLayoutRangeById(id: LayoutObjectId): CellRange;
82
- getBodyCellValue(col: number, row: number): any;
83
82
  getCellRange(col: number, row: number): CellRange;
84
83
  private getCellRangeTranspose;
85
84
  isCellRangeEqual(col: number, row: number, targetCol: number, targetRow: number): boolean;
@@ -94,8 +93,9 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
94
93
  moveHeaderPosition(source: CellAddress, target: CellAddress): {
95
94
  sourceIndex: number;
96
95
  targetIndex: number;
97
- moveSize: number;
98
- moveType: string;
96
+ sourceSize: number;
97
+ targetSize: number;
98
+ moveType: 'column' | 'row';
99
99
  };
100
100
  toggleHierarchyState(diffDataIndices: {
101
101
  add: number[];
@@ -358,11 +358,6 @@ class SimpleHeaderLayoutMap {
358
358
  };
359
359
  throw new Error(`can not found body layout @id=${id}`);
360
360
  }
361
- getBodyCellValue(col, row) {
362
- if (this.isHeader(col, row)) return null;
363
- const {field: field, fieldFormat: fieldFormat} = this.getBody(col, row);
364
- return this._table.getFieldData(fieldFormat || field, col, row);
365
- }
366
361
  getCellRange(col, row) {
367
362
  var _a, _b, _c;
368
363
  if (-1 === col || -1 === row) return {
@@ -388,16 +383,16 @@ class SimpleHeaderLayoutMap {
388
383
  };
389
384
  if (this.transpose) cellRange = this.getCellRangeTranspose(col, row); else if (this.headerLevelCount <= row) {
390
385
  if (this.headerLevelCount <= row && (null === (_b = null === (_a = this.columnObjects[col]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
391
- const value = this.getBodyCellValue(col, row);
386
+ const value = this._table.getCellValue(col, row);
392
387
  for (let r = row - 1; r >= this.headerLevelCount; r--) {
393
- const last_Value = this.getBodyCellValue(col, r);
388
+ const last_Value = this._table.getCellValue(col, r);
394
389
  if ("boolean" == typeof this.columnObjects[col].define.mergeCell) {
395
390
  if (value !== last_Value) break;
396
391
  } else if (!this.columnObjects[col].define.mergeCell(value, last_Value)) break;
397
392
  cellRange.start.row = r;
398
393
  }
399
394
  for (let r = row + 1; r < this.rowCount; r++) {
400
- const next_Value = this.getBodyCellValue(col, r);
395
+ const next_Value = this._table.getCellValue(col, r);
401
396
  if ("boolean" == typeof this.columnObjects[col].define.mergeCell) {
402
397
  if (value !== next_Value) break;
403
398
  } else if (!this.columnObjects[col].define.mergeCell(value, next_Value)) break;
@@ -427,16 +422,16 @@ class SimpleHeaderLayoutMap {
427
422
  };
428
423
  if (this.headerLevelCount <= col || -1 === col && -1 === row) {
429
424
  if (this.headerLevelCount <= col && (null === (_b = null === (_a = this.columnObjects[row]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
430
- const value = this.getBodyCellValue(col, row);
425
+ const value = this._table.getCellValue(col, row);
431
426
  for (let c = col - 1; c >= this.headerLevelCount; c--) {
432
- const last_Value = this.getBodyCellValue(c, row);
427
+ const last_Value = this._table.getCellValue(c, row);
433
428
  if ("boolean" == typeof this.columnObjects[row].define.mergeCell) {
434
429
  if (value !== last_Value) break;
435
430
  } else if (!this.columnObjects[row].define.mergeCell(value, last_Value)) break;
436
431
  result.start.col = c;
437
432
  }
438
433
  for (let c = col + 1; c < (null !== (_c = this.colCount) && void 0 !== _c ? _c : 0); c++) {
439
- const next_Value = this.getBodyCellValue(c, row);
434
+ const next_Value = this._table.getCellValue(c, row);
440
435
  if ("boolean" == typeof this.columnObjects[row].define.mergeCell) {
441
436
  if (value !== next_Value) break;
442
437
  } else if (!this.columnObjects[row].define.mergeCell(value, next_Value)) break;
@@ -559,42 +554,46 @@ class SimpleHeaderLayoutMap {
559
554
  if (this.canMoveHeaderPosition(source, target)) {
560
555
  const sourceCellRange = this.getCellRange(source.col, source.row);
561
556
  if (this.isColumnHeader(source.col, source.row)) {
562
- const moveSize = sourceCellRange.end.col - sourceCellRange.start.col + 1;
557
+ const sourceSize = sourceCellRange.end.col - sourceCellRange.start.col + 1;
563
558
  let targetIndex;
564
559
  const targetCellRange = this.getCellRange(target.col, sourceCellRange.start.row);
565
- if (targetIndex = target.col >= source.col ? targetCellRange.end.col - moveSize + 1 : targetCellRange.start.col,
560
+ if (targetIndex = target.col >= source.col ? targetCellRange.end.col - sourceSize + 1 : targetCellRange.start.col,
566
561
  targetIndex === sourceCellRange.start.col) return null;
567
562
  for (let row = 0; row < this._headerCellIds.length; row++) {
568
- const sourceIds = this._headerCellIds[row].splice(sourceCellRange.start.col, moveSize);
563
+ const sourceIds = this._headerCellIds[row].splice(sourceCellRange.start.col, sourceSize);
569
564
  sourceIds.unshift(targetIndex, 0), Array.prototype.splice.apply(this._headerCellIds[row], sourceIds);
570
565
  }
571
- const sourceColumns = this._columns.splice(sourceCellRange.start.col, moveSize);
566
+ const sourceColumns = this._columns.splice(sourceCellRange.start.col, sourceSize);
572
567
  return sourceColumns.unshift(targetIndex, 0), Array.prototype.splice.apply(this._columns, sourceColumns),
573
568
  this.columnTree.movePosition(sourceCellRange.start.row, sourceCellRange.start.col, targetIndex),
574
- this._cellRangeMap = new Map, {
569
+ this.columnTree.reset(this.columnTree.tree.children, !0), this._cellRangeMap = new Map,
570
+ {
575
571
  sourceIndex: sourceCellRange.start.col,
576
572
  targetIndex: targetIndex,
577
- moveSize: moveSize,
573
+ sourceSize: sourceSize,
574
+ targetSize: targetCellRange.end.col - targetCellRange.start.col + 1,
578
575
  moveType: "column"
579
576
  };
580
577
  }
581
578
  if (this.isRowHeader(source.col, source.row)) {
582
- const moveSize = sourceCellRange.end.row - sourceCellRange.start.row + 1;
579
+ const sourceSize = sourceCellRange.end.row - sourceCellRange.start.row + 1;
583
580
  let targetIndex;
584
581
  const targetCellRange = this.getCellRange(sourceCellRange.start.col, target.row);
585
- if (targetIndex = target.row >= source.row ? targetCellRange.end.row - moveSize + 1 : targetCellRange.start.row,
582
+ if (targetIndex = target.row >= source.row ? targetCellRange.end.row - sourceSize + 1 : targetCellRange.start.row,
586
583
  targetIndex === sourceCellRange.start.row) return null;
587
584
  for (let row = 0; row < this._headerCellIds.length; row++) {
588
- const sourceIds = this._headerCellIds[row].splice(sourceCellRange.start.row, moveSize);
585
+ const sourceIds = this._headerCellIds[row].splice(sourceCellRange.start.row, sourceSize);
589
586
  sourceIds.unshift(targetIndex, 0), Array.prototype.splice.apply(this._headerCellIds[row], sourceIds);
590
587
  }
591
- const sourceColumns = this._columns.splice(sourceCellRange.start.row, moveSize);
588
+ const sourceColumns = this._columns.splice(sourceCellRange.start.row, sourceSize);
592
589
  return sourceColumns.unshift(targetIndex, 0), Array.prototype.splice.apply(this._columns, sourceColumns),
593
590
  this.columnTree.movePosition(sourceCellRange.start.col, sourceCellRange.start.row, targetIndex),
594
- this._cellRangeMap = new Map, {
591
+ this.columnTree.reset(this.columnTree.tree.children, !0), this._cellRangeMap = new Map,
592
+ {
595
593
  sourceIndex: sourceCellRange.start.row,
596
594
  targetIndex: targetIndex,
597
- moveSize: moveSize,
595
+ sourceSize: sourceSize,
596
+ targetSize: targetCellRange.end.row - targetCellRange.start.row + 1,
598
597
  moveType: "row"
599
598
  };
600
599
  }