@visactor/vtable 1.13.2 → 1.13.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/cjs/ListTable.d.ts +1 -1
  2. package/cjs/ListTable.js +5 -5
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/core/BaseTable.js +1 -1
  5. package/cjs/core/BaseTable.js.map +1 -1
  6. package/cjs/dataset/dataset-pivot-table.js +2 -1
  7. package/cjs/edit/editors.js +1 -2
  8. package/cjs/index.d.ts +1 -1
  9. package/cjs/index.js +1 -1
  10. package/cjs/index.js.map +1 -1
  11. package/cjs/layout/layout-helper.js +1 -1
  12. package/cjs/layout/pivot-header-layout.js +1 -1
  13. package/cjs/layout/pivot-layout.js +2 -0
  14. package/cjs/layout/row-height-map.js +1 -1
  15. package/cjs/layout/simple-header-layout.js +1 -1
  16. package/cjs/layout/tree-helper.js +2 -2
  17. package/cjs/plugins/chartModules.js +1 -1
  18. package/cjs/plugins/custom-cell-style.js +1 -1
  19. package/cjs/plugins/icons.js +1 -1
  20. package/cjs/plugins/invert-highlight.js +1 -1
  21. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  22. package/cjs/plugins/themes.js +1 -1
  23. package/cjs/state/checkbox/checkbox.js +82 -51
  24. package/cjs/state/checkbox/checkbox.js.map +1 -1
  25. package/cjs/state/state.d.ts +1 -1
  26. package/cjs/state/state.js +4 -4
  27. package/cjs/state/state.js.map +1 -1
  28. package/cjs/vrender.js.map +1 -1
  29. package/dist/vtable.js +134 -88
  30. package/dist/vtable.min.js +1 -1
  31. package/es/ListTable.d.ts +1 -1
  32. package/es/ListTable.js +5 -5
  33. package/es/ListTable.js.map +1 -1
  34. package/es/core/BaseTable.js +1 -1
  35. package/es/core/BaseTable.js.map +1 -1
  36. package/es/dataset/dataset-pivot-table.js +2 -1
  37. package/es/edit/editors.js +1 -2
  38. package/es/index.d.ts +1 -1
  39. package/es/index.js +1 -1
  40. package/es/index.js.map +1 -1
  41. package/es/layout/layout-helper.js +1 -1
  42. package/es/layout/pivot-header-layout.js +1 -1
  43. package/es/layout/pivot-layout.js +2 -0
  44. package/es/layout/row-height-map.js +1 -1
  45. package/es/layout/simple-header-layout.js +1 -1
  46. package/es/layout/tree-helper.js +1 -1
  47. package/es/plugins/chartModules.js +1 -1
  48. package/es/plugins/custom-cell-style.js +1 -1
  49. package/es/plugins/icons.js +1 -1
  50. package/es/plugins/invert-highlight.js +1 -1
  51. package/es/plugins/list-tree-stick-cell.js +1 -1
  52. package/es/plugins/themes.js +1 -1
  53. package/es/state/checkbox/checkbox.js +82 -52
  54. package/es/state/checkbox/checkbox.js.map +1 -1
  55. package/es/state/state.d.ts +1 -1
  56. package/es/state/state.js +4 -4
  57. package/es/state/state.js.map +1 -1
  58. package/es/vrender.js.map +1 -1
  59. package/package.json +5 -5
@@ -346,4 +346,5 @@ class DatasetForPivotTable {
346
346
  }
347
347
  }
348
348
 
349
- exports.DatasetForPivotTable = DatasetForPivotTable;
349
+ exports.DatasetForPivotTable = DatasetForPivotTable;
350
+ //# sourceMappingURL=dataset-pivot-table.js.map
@@ -6,5 +6,4 @@ function get(editorName) {
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: !0
9
- }), exports.get = exports.editors = void 0, exports.editors = {}, exports.get = get;
10
- //# sourceMappingURL=editors.js.map
9
+ }), exports.get = exports.editors = void 0, exports.editors = {}, exports.get = get;
package/cjs/index.d.ts CHANGED
@@ -19,7 +19,7 @@ import { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils
19
19
  export { getDataCellPath } from './tools/get-data-path';
20
20
  export * from './render/jsx';
21
21
  export { getTargetCell } from './event/util';
22
- export declare const version = "1.13.2";
22
+ export declare const version = "1.13.3-alpha.0";
23
23
  export { TYPES, core, ListTable, ListTableSimple, ListTableConstructorOptions, PivotTable, PivotTableSimple, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText };
24
24
  declare function getIcons(): {
25
25
  [key: string]: TYPES.ColumnIconOption;
package/cjs/index.js CHANGED
@@ -169,7 +169,7 @@ Object.defineProperty(exports, "getTargetCell", {
169
169
  get: function() {
170
170
  return util_1.getTargetCell;
171
171
  }
172
- }), exports.version = "1.13.2", exports.getIcons = getIcons, exports.clearGlobal = clearGlobal,
172
+ }), exports.version = "1.13.3-alpha.0", exports.getIcons = getIcons, exports.clearGlobal = clearGlobal,
173
173
  TYPES.AggregationType, __exportStar(require("./components"), exports), __exportStar(require("./scenegraph/group-creater/cell-type"), exports);
174
174
 
175
175
  var TABLE_EVENT_TYPE_1 = require("./core/TABLE_EVENT_TYPE");
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AAuG1D,4FAvGO,qBAAW,OAuGP;AAtGb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AA4DlC,sBAAK;AA3DP,6CAA+B;AA4D7B,oBAAI;AA3DN,6CAA+B;AAqF7B,oBAAI;AApFN,+CAAiC;AACjC,qDAAuC;AAwFrC,4BAAQ;AAvFV,iDAAmC;AAiFjC,wBAAM;AAhFR,yEAA2D;AA0FzD,wCAAc;AApEhB,mDAA4D;AAkC1D,0FAlCuB,4BAAS,OAkCvB;AAjCX,yDAAqD;AAkCnD,gGAlCO,kCAAe,OAkCP;AAhCjB,qDAA+D;AAkC7D,2FAlCwB,8BAAU,OAkCxB;AAjCZ,2DAAuD;AAkCrD,iGAlCO,oCAAgB,OAkCP;AAjClB,6CAA0C;AAoCxC,2FApCO,uBAAU,OAoCP;AAlCZ,8DAAgD;AA8D9C,oCAAY;AA5Dd,wEAAoE;AA6DlE,2FA7DO,wBAAU,OA6DP;AA5DZ,gGAAqF;AA6DnF,4FA7DO,iCAAW,OA6DP;AA5Db,kEAA+F;AA+D7F,mGA/DO,iCAAkB,OA+DP;AADlB,yGA9D2B,uCAAwB,OA8D3B;AAzD1B,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAC7B,qCAA6C;AAApC,qGAAA,aAAa,OAAA;AAKT,QAAA,OAAO,GAAG,QAAQ,CAAC;AAwDhC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAtBC,4BAAQ;AAwBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA3BC,kCAAW;AA4Bb,KAAK,CAAC,eAAe,CAAC;AAEtB,+CAA6B;AAC7B,uEAAqD;AAErD,4DAA2D;AAAlD,oHAAA,gBAAgB,OAAA;AACzB,wFAA+G;AAAtG,gIAAA,sBAAsB,OAAA;AAAE,gIAAA,sBAAsB,OAAA;AAEvD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.13.2\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText\n // VRender // should use import {xxx} from '@visactor/vtable/es/vrender'\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AAuG1D,4FAvGO,qBAAW,OAuGP;AAtGb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AA4DlC,sBAAK;AA3DP,6CAA+B;AA4D7B,oBAAI;AA3DN,6CAA+B;AAqF7B,oBAAI;AApFN,+CAAiC;AACjC,qDAAuC;AAwFrC,4BAAQ;AAvFV,iDAAmC;AAiFjC,wBAAM;AAhFR,yEAA2D;AA0FzD,wCAAc;AApEhB,mDAA4D;AAkC1D,0FAlCuB,4BAAS,OAkCvB;AAjCX,yDAAqD;AAkCnD,gGAlCO,kCAAe,OAkCP;AAhCjB,qDAA+D;AAkC7D,2FAlCwB,8BAAU,OAkCxB;AAjCZ,2DAAuD;AAkCrD,iGAlCO,oCAAgB,OAkCP;AAjClB,6CAA0C;AAoCxC,2FApCO,uBAAU,OAoCP;AAlCZ,8DAAgD;AA8D9C,oCAAY;AA5Dd,wEAAoE;AA6DlE,2FA7DO,wBAAU,OA6DP;AA5DZ,gGAAqF;AA6DnF,4FA7DO,iCAAW,OA6DP;AA5Db,kEAA+F;AA+D7F,mGA/DO,iCAAkB,OA+DP;AADlB,yGA9D2B,uCAAwB,OA8D3B;AAzD1B,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAC7B,qCAA6C;AAApC,qGAAA,aAAa,OAAA;AAKT,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAwDxC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAtBC,4BAAQ;AAwBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA3BC,kCAAW;AA4Bb,KAAK,CAAC,eAAe,CAAC;AAEtB,+CAA6B;AAC7B,uEAAqD;AAErD,4DAA2D;AAAlD,oHAAA,gBAAgB,OAAA;AACzB,wFAA+G;AAAtG,gIAAA,sBAAsB,OAAA;AAAE,gIAAA,sBAAsB,OAAA;AAEvD,mDAAkD;AAAzC,0GAAA,WAAW,OAAA","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTableAll as ListTable } from './ListTable-all';\nimport { ListTableSimple } from './ListTable-simple';\n// import { PivotTable } from './PivotTable';\nimport { PivotTableAll as PivotTable } from './PivotTable-all';\nimport { PivotTableSimple } from './PivotTable-simple';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\nexport { getTargetCell } from './event/util';\n\n// export * as VRender from './vrender';\n// import * as VRender from './vrender';\n\nexport const version = \"1.13.3-alpha.0\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableSimple,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableSimple,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText\n // VRender // should use import {xxx} from '@visactor/vtable/es/vrender'\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n\nexport * from './components';\nexport * from './scenegraph/group-creater/cell-type';\n\nexport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nexport { PIVOT_CHART_EVENT_TYPE, PIVOT_TABLE_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\n\nexport { EventTarget } from './event/EventTarget';\n"]}
@@ -141,4 +141,4 @@ exports.checkHasAggregation = checkHasAggregation, exports.checkHasAggregationOn
141
141
  exports.checkHasAggregationOnBottom = checkHasAggregationOnBottom, exports.checkHasTreeDefine = checkHasTreeDefine,
142
142
  exports.hasAutoImageColumn = hasAutoImageColumn, exports.parseColKeyRowKeyForPivotTable = parseColKeyRowKeyForPivotTable,
143
143
  exports.supplementIndicatorNodesForCustomTree = supplementIndicatorNodesForCustomTree;
144
- //# sourceMappingURL=layout-helper.js.map
144
+ //# sourceMappingURL=layout-helper.js.map
@@ -1716,5 +1716,5 @@ function bandSpace(count, paddingInner, paddingOuter) {
1716
1716
  count ? space > 0 ? space : 1 : 0;
1717
1717
  }
1718
1718
 
1719
+ exports.PivotHeaderLayoutMap = PivotHeaderLayoutMap;
1719
1720
  //# sourceMappingURL=pivot-header-layout.js.map
1720
- exports.PivotHeaderLayoutMap = PivotHeaderLayoutMap;
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=pivot-layout.js.map
@@ -172,5 +172,5 @@ function indexFirst(arr, elm) {
172
172
  return high < 0 ? 0 : high;
173
173
  }
174
174
 
175
+ exports.NumberRangeMap = NumberRangeMap;
175
176
  //# sourceMappingURL=row-height-map.js.map
176
- exports.NumberRangeMap = NumberRangeMap;
@@ -761,4 +761,4 @@ class SimpleHeaderLayoutMap {
761
761
  }
762
762
 
763
763
  exports.SimpleHeaderLayoutMap = SimpleHeaderLayoutMap;
764
- //# sourceMappingURL=simple-header-layout.js.map
764
+ //# sourceMappingURL=simple-header-layout.js.map
@@ -298,6 +298,6 @@ function clearNode(children) {
298
298
  }
299
299
  }
300
300
 
301
- //# sourceMappingURL=tree-helper.js.map
302
301
  exports.DimensionTree = DimensionTree, exports.generateLayoutTree = generateLayoutTree,
303
- exports.countLayoutTree = countLayoutTree, exports.dealHeader = dealHeader, exports.dealHeaderForTreeMode = dealHeaderForTreeMode;
302
+ exports.countLayoutTree = countLayoutTree, exports.dealHeader = dealHeader, exports.dealHeaderForTreeMode = dealHeaderForTreeMode;
303
+ //# sourceMappingURL=tree-helper.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.chartTypes = void 0, exports.chartTypes = {};
6
- //# sourceMappingURL=chartModules.js.map
6
+ //# sourceMappingURL=chartModules.js.map
@@ -101,4 +101,4 @@ const registerCustomCellStylePlugin = () => {
101
101
  };
102
102
 
103
103
  exports.registerCustomCellStylePlugin = registerCustomCellStylePlugin;
104
- //# sourceMappingURL=custom-cell-style.js.map
104
+ //# sourceMappingURL=custom-cell-style.js.map
@@ -23,4 +23,4 @@ class IconCache {
23
23
  }
24
24
 
25
25
  exports.IconCache = IconCache, IconCache.cache = new Map;
26
- //# sourceMappingURL=icons.js.map
26
+ //# sourceMappingURL=icons.js.map
@@ -20,4 +20,4 @@ function onBeforeAttributeUpdateForInvertHighlight(val, attribute) {
20
20
  }
21
21
 
22
22
  exports.onBeforeAttributeUpdateForInvertHighlight = onBeforeAttributeUpdateForInvertHighlight;
23
- //# sourceMappingURL=invert-highlight.js.map
23
+ //# sourceMappingURL=invert-highlight.js.map
@@ -177,4 +177,4 @@ const registerListTreeStickCellPlugin = () => {
177
177
  };
178
178
 
179
179
  exports.registerListTreeStickCellPlugin = registerListTreeStickCellPlugin;
180
- //# sourceMappingURL=list-tree-stick-cell.js.map
180
+ //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.themes = void 0, exports.themes = {};
6
- //# sourceMappingURL=themes.js.map
6
+ //# sourceMappingURL=themes.js.map
@@ -9,8 +9,10 @@ const vutils_1 = require("@visactor/vutils"), helper_1 = require("../../tools/he
9
9
  function setCheckedState(col, row, field, checked, state) {
10
10
  const recordIndex = state.table.getRecordShowIndexByCell(col, row);
11
11
  if (recordIndex >= 0) {
12
- const dataIndex = state.table.dataSource.getIndexKey(recordIndex);
13
- state.checkedState[dataIndex] || (state.checkedState[dataIndex] = {}), state.checkedState[dataIndex][field] = checked;
12
+ const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();
13
+ state.checkedState.has(dataIndex) ? state.checkedState.get(dataIndex)[field] = checked : state.checkedState.set(dataIndex, {
14
+ [field]: checked
15
+ });
14
16
  }
15
17
  }
16
18
 
@@ -26,22 +28,24 @@ function syncCheckedState(col, row, field, checked, state) {
26
28
  if (state.table.isHeader(col, row)) {
27
29
  if ((0, vutils_1.isValid)(state.headerCheckedState[field])) return state.headerCheckedState[field];
28
30
  if ("function" == typeof checked) return;
29
- if ((0, vutils_1.isValid)(checked)) state.headerCheckedState[field] = checked; else if ((null === (_a = state.checkedState) || void 0 === _a ? void 0 : _a.length) > 0) {
31
+ if ((0, vutils_1.isValid)(checked)) state.headerCheckedState[field] = checked; else if ((null === (_a = state.checkedState) || void 0 === _a ? void 0 : _a.size) > 0) {
30
32
  return state.updateHeaderCheckedState(field, col, row);
31
33
  }
32
34
  return state.headerCheckedState[field];
33
35
  }
34
36
  const recordIndex = state.table.getRecordShowIndexByCell(col, row);
35
37
  if (recordIndex >= 0) {
36
- const dataIndex = state.table.dataSource.getIndexKey(recordIndex);
37
- if ((0, vutils_1.isValid)(null === (_b = state.checkedState[dataIndex]) || void 0 === _b ? void 0 : _b[field])) return state.checkedState[dataIndex][field];
38
- state.checkedState[dataIndex] || (state.checkedState[dataIndex] = {}), state.checkedState[dataIndex][field] = checked;
38
+ const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();
39
+ if ((0, vutils_1.isValid)(null === (_b = state.checkedState.get(dataIndex)) || void 0 === _b ? void 0 : _b[field])) return state.checkedState.get(dataIndex)[field];
40
+ state.checkedState.has(dataIndex) ? state.checkedState.get(dataIndex)[field] = checked : state.checkedState.set(dataIndex, {
41
+ [field]: checked
42
+ });
39
43
  }
40
44
  return checked;
41
45
  }
42
46
 
43
47
  function initCheckedState(records, state) {
44
- state.checkedState = [], state.headerCheckedState = {}, state.radioState = {};
48
+ state.checkedState.clear(), state.headerCheckedState = {}, state.radioState = {};
45
49
  let isNeedInitHeaderCheckedStateFromRecord = !1;
46
50
  if (state._checkboxCellTypeFields = [], state._headerCheckFuncs = {}, state.table.internalProps.layoutMap.headerObjects.forEach(((hd, index) => {
47
51
  if ("checkbox" === hd.headerType) {
@@ -56,51 +60,29 @@ function initCheckedState(records, state) {
56
60
  state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);
57
61
  isNeedInitHeaderCheckedStateFromRecord = !0;
58
62
  }
59
- isNeedInitHeaderCheckedStateFromRecord && (null == records || records.forEach(((record, index) => {
60
- state._checkboxCellTypeFields.forEach((field => {
61
- const value = record[field];
62
- let isChecked;
63
- if ((0, vutils_1.isObject)(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
64
- null == isChecked) {
65
- const headerCheckFunc = state._headerCheckFuncs[field];
66
- if (headerCheckFunc) {
67
- const cellAddr = state.table.getCellAddrByFieldRecord(field, index);
68
- isChecked = (0, helper_1.getOrApply)(headerCheckFunc, {
69
- col: cellAddr.col,
70
- row: cellAddr.row,
71
- table: state.table,
72
- context: null,
73
- value: value
74
- });
75
- }
76
- }
77
- state.checkedState[index] || (state.checkedState[index] = {}), state.checkedState[index][field] = isChecked;
78
- }));
79
- })));
63
+ isNeedInitHeaderCheckedStateFromRecord && initRecordCheckState(state);
80
64
  }
81
65
 
82
66
  function updateHeaderCheckedState(field, state, col, row) {
83
- const allChecked = state.checkedState.every(((check_state, index) => {
84
- const tableIndex = state.table.getTableIndexByRecordIndex(index);
85
- return !!(state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex)) || !0 === (null == check_state ? void 0 : check_state[field]);
86
- }));
87
- if (allChecked) return state.headerCheckedState[field] = !0, allChecked;
88
- if (state.checkedState.every(((check_state, index) => {
89
- const tableIndex = state.table.getTableIndexByRecordIndex(index);
90
- return !!(state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex)) || !1 === (null == check_state ? void 0 : check_state[field]);
91
- }))) return state.headerCheckedState[field] = !1, !1;
92
- return !!state.checkedState.find((check_state => !0 === (null == check_state ? void 0 : check_state[field]))) && (state.headerCheckedState[field] = "indeterminate",
93
- "indeterminate");
67
+ let allChecked = !0, allUnChecked = !0, hasChecked = !1;
68
+ return state.checkedState.forEach(((check_state, index) => {
69
+ index = index.includes(",") ? index.split(",").map((item => Number(item))) : Number(index);
70
+ const tableIndex = state.table.getTableIndexByRecordIndex(index), mergeCell = state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex), data = state.table.dataSource.get(index);
71
+ mergeCell || data.vtableMerge || (!0 !== (null == check_state ? void 0 : check_state[field]) ? allChecked = !1 : (allUnChecked = !1,
72
+ hasChecked = !0));
73
+ })), allChecked ? (state.headerCheckedState[field] = !0, allChecked) : allUnChecked ? (state.headerCheckedState[field] = !1,
74
+ !1) : !!hasChecked && (state.headerCheckedState[field] = "indeterminate", "indeterminate");
94
75
  }
95
76
 
96
77
  function initLeftRecordsCheckState(records, state) {
97
- for (let index = state.checkedState.length; index < records.length; index++) {
78
+ for (let index = state.checkedState.size; index < records.length; index++) {
98
79
  const record = records[index];
99
80
  state._checkboxCellTypeFields.forEach((field => {
100
81
  const value = record[field];
101
82
  let isChecked;
102
- (0, vutils_1.isObject)(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
103
- state.checkedState[index] || (state.checkedState[index] = {}), state.checkedState[index][field] = isChecked;
83
+ (0, vutils_1.isObject)(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value);
84
+ const dataIndex = index.toString();
85
+ state.checkedState.get(dataIndex) || state.checkedState.set(dataIndex, {}), state.checkedState.get(dataIndex)[field] = isChecked;
104
86
  }));
105
87
  }
106
88
  }
@@ -127,16 +109,38 @@ function setCellCheckboxState(col, row, checked, table) {
127
109
 
128
110
  function changeCheckboxOrder(sourceIndex, targetIndex, state) {
129
111
  const {checkedState: checkedState, table: table} = state;
112
+ let source, target;
130
113
  if (table.internalProps.transpose ? (sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0),
131
- targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex),
132
- targetIndex = table.getRecordShowIndexByCell(0, targetIndex)), sourceIndex > targetIndex) {
133
- const sourceRecord = checkedState[sourceIndex];
134
- for (let i = sourceIndex; i > targetIndex; i--) checkedState[i] = checkedState[i - 1];
135
- checkedState[targetIndex] = sourceRecord;
114
+ targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (source = table.getRecordIndexByCell(0, sourceIndex),
115
+ target = table.getRecordIndexByCell(0, targetIndex)), (0, vutils_1.isNumber)(source) && (0,
116
+ vutils_1.isNumber)(target)) {
117
+ if (sourceIndex > targetIndex) {
118
+ const sourceRecord = checkedState.get(sourceIndex.toString());
119
+ for (let i = sourceIndex; i > targetIndex; i--) checkedState.set(i.toString(), checkedState.get((i - 1).toString()));
120
+ checkedState.set(targetIndex.toString(), sourceRecord);
121
+ } else if (sourceIndex < targetIndex) {
122
+ const sourceRecord = checkedState.get(sourceIndex.toString());
123
+ for (let i = sourceIndex; i < targetIndex; i++) checkedState.set(i.toString(), checkedState.get((i + 1).toString()));
124
+ checkedState.set(targetIndex.toString(), sourceRecord);
125
+ }
126
+ } else if ((0, vutils_1.isArray)(source) && (0, vutils_1.isArray)(target)) if ((sourceIndex = source[source.length - 1]) > (targetIndex = target[target.length - 1])) {
127
+ const sourceRecord = checkedState.get(source.toString());
128
+ for (let i = sourceIndex; i > targetIndex; i--) {
129
+ const now = [ ...source ];
130
+ now[now.length - 1] = i;
131
+ const last = [ ...source ];
132
+ last[last.length - 1] = i - 1, checkedState.set(now.toString(), checkedState.get(last.toString()));
133
+ }
134
+ checkedState.set(target.toString(), sourceRecord);
136
135
  } else if (sourceIndex < targetIndex) {
137
- const sourceRecord = checkedState[sourceIndex];
138
- for (let i = sourceIndex; i < targetIndex; i++) checkedState[i] = checkedState[i + 1];
139
- checkedState[targetIndex] = sourceRecord;
136
+ const sourceRecord = checkedState.get(source.toString());
137
+ for (let i = sourceIndex; i < targetIndex; i++) {
138
+ const now = [ ...source ];
139
+ now[now.length - 1] = i;
140
+ const next = [ ...source ];
141
+ next[next.length - 1] = i + 1, checkedState.set(now.toString(), checkedState.get(next.toString()));
142
+ }
143
+ checkedState.set(target.toString(), sourceRecord);
140
144
  }
141
145
  }
142
146
 
@@ -145,11 +149,38 @@ function getGroupCheckboxState(table) {
145
149
  return dataSource.currentIndexedData.forEach(((indexArr, index) => {
146
150
  if ((0, vutils_1.isArray)(indexArr) && indexArr.length === groupKeyLength) {
147
151
  const {vtableOriginIndex: vtableOriginIndex} = dataSource.getRawRecord(indexArr);
148
- result[vtableOriginIndex] = table.stateManager.checkedState[indexArr];
152
+ result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());
149
153
  }
150
154
  })), result;
151
155
  }
152
156
 
157
+ function initRecordCheckState(state) {
158
+ const table = state.table, start = table.internalProps.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, end = table.internalProps.transpose ? table.colCount : table.rowCount;
159
+ for (let index = 0; index + start < end; index++) {
160
+ const record = table.dataSource.get(index);
161
+ state._checkboxCellTypeFields.forEach((field => {
162
+ const value = record[field];
163
+ let isChecked;
164
+ if ((0, vutils_1.isObject)(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
165
+ null == isChecked) {
166
+ const headerCheckFunc = state._headerCheckFuncs[field];
167
+ if (headerCheckFunc) {
168
+ const cellAddr = state.table.getCellAddrByFieldRecord(field, index);
169
+ isChecked = (0, helper_1.getOrApply)(headerCheckFunc, {
170
+ col: cellAddr.col,
171
+ row: cellAddr.row,
172
+ table: state.table,
173
+ context: null,
174
+ value: value
175
+ });
176
+ }
177
+ }
178
+ const dataIndex = state.table.dataSource.getIndexKey(index).toString();
179
+ state.checkedState.get(dataIndex) || state.checkedState.set(dataIndex, {}), state.checkedState.get(dataIndex)[field] = isChecked;
180
+ }));
181
+ }
182
+ }
183
+
153
184
  exports.setCheckedState = setCheckedState, exports.setHeaderCheckedState = setHeaderCheckedState,
154
185
  exports.syncCheckedState = syncCheckedState, exports.initCheckedState = initCheckedState,
155
186
  exports.updateHeaderCheckedState = updateHeaderCheckedState, exports.initLeftRecordsCheckState = initLeftRecordsCheckState,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CheckBox } from '@visactor/vrender-components';\nimport type { CachedDataSource } from '../../data';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\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 (state.checkedState[dataIndex]) {\n state.checkedState[dataIndex][field] = checked;\n } else {\n state.checkedState[dataIndex] = {};\n state.checkedState[dataIndex][field] = checked;\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean, state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\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?.length > 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) as number;\n if (isValid(state.checkedState[dataIndex]?.[field])) {\n return state.checkedState[dataIndex][field];\n }\n if (state.checkedState[dataIndex]) {\n state.checkedState[dataIndex][field] = checked;\n } else {\n state.checkedState[dataIndex] = {};\n state.checkedState[dataIndex][field] = checked;\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 = [];\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' && !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 records?.forEach((record: any, index: number) => {\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 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 if (!state.checkedState[index]) {\n state.checkedState[index] = {};\n }\n state.checkedState[index][field] = isChecked;\n });\n });\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 const allChecked = state.checkedState.every((check_state: Record<string | number, boolean>, index: number) => {\n const tableIndex = state.table.getTableIndexByRecordIndex(index);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n if (mergeCell) {\n return true;\n }\n return check_state?.[field] === true;\n });\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n const allUnChecked = state.checkedState.every((check_state: Record<string | number, boolean>, index: number) => {\n const tableIndex = state.table.getTableIndexByRecordIndex(index);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n if (mergeCell) {\n return true;\n }\n return check_state?.[field] === false;\n });\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n const hasChecked = state.checkedState.find((check_state: Record<string | number, boolean>) => {\n return check_state?.[field] === true;\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.length; 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 if (!state.checkedState[index]) {\n state.checkedState[index] = {};\n }\n state.checkedState[index][field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(col: number, row: number, checked: boolean, table: BaseTableAPI) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.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 changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, 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 = checkedState[sourceIndex];\n // checkedState[sourceIndex] = checkedState[targetIndex];\n // checkedState[targetIndex] = sourceRecord;\n // }\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState[sourceIndex];\n for (let i = sourceIndex; i > targetIndex; i--) {\n checkedState[i] = checkedState[i - 1];\n }\n checkedState[targetIndex] = sourceRecord;\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState[sourceIndex];\n for (let i = sourceIndex; i < targetIndex; i++) {\n checkedState[i] = checkedState[i + 1];\n }\n checkedState[targetIndex] = sourceRecord;\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 any).getRawRecord(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState[indexArr];\n }\n });\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CheckBox } from '@visactor/vrender-components';\nimport type { CachedDataSource } from '../../data';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\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.has(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, state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\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.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\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' && !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(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 || 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(col: number, row: number, checked: boolean, table: BaseTableAPI) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.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 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 as any).getRecordIndexByCell(0, sourceIndex);\n target = (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(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 any).getRawRecord(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction initRecordCheckState(state: StateManager) {\n const table = state.table;\n const start = table.internalProps.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const end = table.internalProps.transpose ? table.colCount : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\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 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 = 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"]}
@@ -124,7 +124,7 @@ export declare class StateManager {
124
124
  _clearVerticalScrollBar: any;
125
125
  _clearHorizontalScrollBar: any;
126
126
  fastScrolling: boolean;
127
- checkedState: Record<string | number, boolean>[];
127
+ checkedState: Map<string | number, Record<string | number, boolean>>;
128
128
  headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
129
129
  _checkboxCellTypeFields: (string | number)[];
130
130
  _headerCheckFuncs: Record<string | number, Function>;
@@ -8,9 +8,9 @@ const menu_1 = require("../scenegraph/component/menu"), ts_types_1 = require("..
8
8
 
9
9
  class StateManager {
10
10
  constructor(table) {
11
- this.fastScrolling = !1, this.checkedState = [], this.headerCheckedState = {}, this._checkboxCellTypeFields = [],
12
- this._headerCheckFuncs = {}, this.radioState = {}, this.resetInteractionState = (0,
13
- debounce_1.debounce)((state => {
11
+ this.fastScrolling = !1, this.checkedState = new Map, this.headerCheckedState = {},
12
+ this._checkboxCellTypeFields = [], this._headerCheckFuncs = {}, this.radioState = {},
13
+ this.resetInteractionState = (0, debounce_1.debounce)((state => {
14
14
  this.updateInteractionState(null != state ? state : ts_types_1.InteractionState.default);
15
15
  }), 100), this.table = table, this.initState(), this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this),
16
16
  this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this);
@@ -692,7 +692,7 @@ class StateManager {
692
692
  return (0, radio_1.syncRadioState)(col, row, field, radioType, indexInCell, isChecked, this);
693
693
  }
694
694
  changeCheckboxAndRadioOrder(sourceIndex, targetIndex) {
695
- this.checkedState.length && (0, checkbox_1.changeCheckboxOrder)(sourceIndex, targetIndex, this),
695
+ this.checkedState.size && (0, checkbox_1.changeCheckboxOrder)(sourceIndex, targetIndex, this),
696
696
  this.radioState.length && (0, radio_1.changeRadioOrder)(sourceIndex, targetIndex, this);
697
697
  }
698
698
  setCustomSelectRanges(customSelectRanges) {