@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
@@ -337,4 +337,5 @@ export class DatasetForPivotTable {
337
337
  }
338
338
  return tree.forEach((treeNode => getPath(treeNode, []))), result;
339
339
  }
340
- }
340
+ }
341
+ //# sourceMappingURL=dataset-pivot-table.js.map
@@ -2,5 +2,4 @@ export const editors = {};
2
2
 
3
3
  export function get(editorName) {
4
4
  if (editors[editorName]) return editors[editorName];
5
- }
6
- //# sourceMappingURL=editors.js.map
5
+ }
package/es/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/es/index.js CHANGED
@@ -40,7 +40,7 @@ export * from "./render/jsx";
40
40
 
41
41
  export { getTargetCell } from "./event/util";
42
42
 
43
- export const version = "1.13.2";
43
+ export const version = "1.13.3-alpha.0";
44
44
 
45
45
  export { TYPES, core, ListTable, ListTableSimple, PivotTable, PivotTableSimple, PivotChart, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText };
46
46
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAIhC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAEf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAEnB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC","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,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAIxC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EAEf,UAAU,EACV,gBAAgB,EAGhB,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAEnB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC","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"]}
@@ -134,4 +134,4 @@ export function supplementIndicatorNodesForCustomTree(customTree, indicators) {
134
134
  };
135
135
  })), customTree;
136
136
  }
137
- //# sourceMappingURL=layout-helper.js.map
137
+ //# sourceMappingURL=layout-helper.js.map
@@ -1708,4 +1708,4 @@ function bandSpace(count, paddingInner, paddingOuter) {
1708
1708
  return space = 1 === count ? count + 2 * paddingOuter : count - paddingInner + 2 * paddingOuter,
1709
1709
  count ? space > 0 ? space : 1 : 0;
1710
1710
  }
1711
- //# sourceMappingURL=pivot-header-layout.js.map
1711
+ //# sourceMappingURL=pivot-header-layout.js.map
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=pivot-layout.js.map
@@ -165,4 +165,4 @@ function indexFirst(arr, elm) {
165
165
  }
166
166
  return high < 0 ? 0 : high;
167
167
  }
168
- //# sourceMappingURL=row-height-map.js.map
168
+ //# sourceMappingURL=row-height-map.js.map
@@ -762,4 +762,4 @@ export class SimpleHeaderLayoutMap {
762
762
  if (col >= 0) return col < this.leftRowSeriesNumberColumnCount ? this.leftRowSeriesNumberColumn[col].define : this.transpose ? this._columns[row].define : this._columns[col - this.leftRowSeriesNumberColumnCount].define;
763
763
  }
764
764
  }
765
- //# sourceMappingURL=simple-header-layout.js.map
765
+ //# sourceMappingURL=simple-header-layout.js.map
@@ -297,4 +297,4 @@ function clearNode(children) {
297
297
  childrenNew && clearNode(childrenNew);
298
298
  }
299
299
  }
300
- //# sourceMappingURL=tree-helper.js.map
300
+ //# sourceMappingURL=tree-helper.js.map
@@ -1,2 +1,2 @@
1
1
  export const chartTypes = {};
2
- //# sourceMappingURL=chartModules.js.map
2
+ //# sourceMappingURL=chartModules.js.map
@@ -95,4 +95,4 @@ export function mergeStyle(cacheStyle, customCellStyle) {
95
95
  export const registerCustomCellStylePlugin = () => {
96
96
  Factory.registerComponent("customCellStylePlugin", CustomCellStylePlugin);
97
97
  };
98
- //# sourceMappingURL=custom-cell-style.js.map
98
+ //# sourceMappingURL=custom-cell-style.js.map
@@ -19,4 +19,4 @@ export class IconCache {
19
19
  }
20
20
 
21
21
  IconCache.cache = new Map;
22
- //# sourceMappingURL=icons.js.map
22
+ //# sourceMappingURL=icons.js.map
@@ -11,4 +11,4 @@ export function onBeforeAttributeUpdateForInvertHighlight(val, attribute) {
11
11
  });
12
12
  }
13
13
  }
14
- //# sourceMappingURL=invert-highlight.js.map
14
+ //# sourceMappingURL=invert-highlight.js.map
@@ -175,4 +175,4 @@ function scrollToRow(row, table) {
175
175
  export const registerListTreeStickCellPlugin = () => {
176
176
  Factory.registerComponent("listTreeStickCellPlugin", ListTreeStickCellPlugin);
177
177
  };
178
- //# sourceMappingURL=list-tree-stick-cell.js.map
178
+ //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -1,2 +1,2 @@
1
1
  export const themes = {};
2
- //# sourceMappingURL=themes.js.map
2
+ //# sourceMappingURL=themes.js.map
@@ -1,12 +1,14 @@
1
- import { isArray, isObject, isValid } from "@visactor/vutils";
1
+ import { isArray, isNumber, isObject, isValid } from "@visactor/vutils";
2
2
 
3
3
  import { getOrApply } from "../../tools/helper";
4
4
 
5
5
  export function setCheckedState(col, row, field, checked, state) {
6
6
  const recordIndex = state.table.getRecordShowIndexByCell(col, row);
7
7
  if (recordIndex >= 0) {
8
- const dataIndex = state.table.dataSource.getIndexKey(recordIndex);
9
- state.checkedState[dataIndex] || (state.checkedState[dataIndex] = {}), state.checkedState[dataIndex][field] = checked;
8
+ const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();
9
+ state.checkedState.has(dataIndex) ? state.checkedState.get(dataIndex)[field] = checked : state.checkedState.set(dataIndex, {
10
+ [field]: checked
11
+ });
10
12
  }
11
13
  }
12
14
 
@@ -22,22 +24,24 @@ export function syncCheckedState(col, row, field, checked, state) {
22
24
  if (state.table.isHeader(col, row)) {
23
25
  if (isValid(state.headerCheckedState[field])) return state.headerCheckedState[field];
24
26
  if ("function" == typeof checked) return;
25
- if (isValid(checked)) state.headerCheckedState[field] = checked; else if ((null === (_a = state.checkedState) || void 0 === _a ? void 0 : _a.length) > 0) {
27
+ if (isValid(checked)) state.headerCheckedState[field] = checked; else if ((null === (_a = state.checkedState) || void 0 === _a ? void 0 : _a.size) > 0) {
26
28
  return state.updateHeaderCheckedState(field, col, row);
27
29
  }
28
30
  return state.headerCheckedState[field];
29
31
  }
30
32
  const recordIndex = state.table.getRecordShowIndexByCell(col, row);
31
33
  if (recordIndex >= 0) {
32
- const dataIndex = state.table.dataSource.getIndexKey(recordIndex);
33
- if (isValid(null === (_b = state.checkedState[dataIndex]) || void 0 === _b ? void 0 : _b[field])) return state.checkedState[dataIndex][field];
34
- state.checkedState[dataIndex] || (state.checkedState[dataIndex] = {}), state.checkedState[dataIndex][field] = checked;
34
+ const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();
35
+ if (isValid(null === (_b = state.checkedState.get(dataIndex)) || void 0 === _b ? void 0 : _b[field])) return state.checkedState.get(dataIndex)[field];
36
+ state.checkedState.has(dataIndex) ? state.checkedState.get(dataIndex)[field] = checked : state.checkedState.set(dataIndex, {
37
+ [field]: checked
38
+ });
35
39
  }
36
40
  return checked;
37
41
  }
38
42
 
39
43
  export function initCheckedState(records, state) {
40
- state.checkedState = [], state.headerCheckedState = {}, state.radioState = {};
44
+ state.checkedState.clear(), state.headerCheckedState = {}, state.radioState = {};
41
45
  let isNeedInitHeaderCheckedStateFromRecord = !1;
42
46
  if (state._checkboxCellTypeFields = [], state._headerCheckFuncs = {}, state.table.internalProps.layoutMap.headerObjects.forEach(((hd, index) => {
43
47
  if ("checkbox" === hd.headerType) {
@@ -52,51 +56,29 @@ export function initCheckedState(records, state) {
52
56
  state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);
53
57
  isNeedInitHeaderCheckedStateFromRecord = !0;
54
58
  }
55
- isNeedInitHeaderCheckedStateFromRecord && (null == records || records.forEach(((record, index) => {
56
- state._checkboxCellTypeFields.forEach((field => {
57
- const value = record[field];
58
- let isChecked;
59
- if (isObject(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
60
- null == isChecked) {
61
- const headerCheckFunc = state._headerCheckFuncs[field];
62
- if (headerCheckFunc) {
63
- const cellAddr = state.table.getCellAddrByFieldRecord(field, index);
64
- isChecked = getOrApply(headerCheckFunc, {
65
- col: cellAddr.col,
66
- row: cellAddr.row,
67
- table: state.table,
68
- context: null,
69
- value: value
70
- });
71
- }
72
- }
73
- state.checkedState[index] || (state.checkedState[index] = {}), state.checkedState[index][field] = isChecked;
74
- }));
75
- })));
59
+ isNeedInitHeaderCheckedStateFromRecord && initRecordCheckState(state);
76
60
  }
77
61
 
78
62
  export function updateHeaderCheckedState(field, state, col, row) {
79
- const allChecked = state.checkedState.every(((check_state, index) => {
80
- const tableIndex = state.table.getTableIndexByRecordIndex(index);
81
- return !!(state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex)) || !0 === (null == check_state ? void 0 : check_state[field]);
82
- }));
83
- if (allChecked) return state.headerCheckedState[field] = !0, allChecked;
84
- if (state.checkedState.every(((check_state, index) => {
85
- const tableIndex = state.table.getTableIndexByRecordIndex(index);
86
- return !!(state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex)) || !1 === (null == check_state ? void 0 : check_state[field]);
87
- }))) return state.headerCheckedState[field] = !1, !1;
88
- return !!state.checkedState.find((check_state => !0 === (null == check_state ? void 0 : check_state[field]))) && (state.headerCheckedState[field] = "indeterminate",
89
- "indeterminate");
63
+ let allChecked = !0, allUnChecked = !0, hasChecked = !1;
64
+ return state.checkedState.forEach(((check_state, index) => {
65
+ index = index.includes(",") ? index.split(",").map((item => Number(item))) : Number(index);
66
+ 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);
67
+ mergeCell || data.vtableMerge || (!0 !== (null == check_state ? void 0 : check_state[field]) ? allChecked = !1 : (allUnChecked = !1,
68
+ hasChecked = !0));
69
+ })), allChecked ? (state.headerCheckedState[field] = !0, allChecked) : allUnChecked ? (state.headerCheckedState[field] = !1,
70
+ !1) : !!hasChecked && (state.headerCheckedState[field] = "indeterminate", "indeterminate");
90
71
  }
91
72
 
92
73
  export function initLeftRecordsCheckState(records, state) {
93
- for (let index = state.checkedState.length; index < records.length; index++) {
74
+ for (let index = state.checkedState.size; index < records.length; index++) {
94
75
  const record = records[index];
95
76
  state._checkboxCellTypeFields.forEach((field => {
96
77
  const value = record[field];
97
78
  let isChecked;
98
- isObject(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
99
- state.checkedState[index] || (state.checkedState[index] = {}), state.checkedState[index][field] = isChecked;
79
+ isObject(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value);
80
+ const dataIndex = index.toString();
81
+ state.checkedState.get(dataIndex) || state.checkedState.set(dataIndex, {}), state.checkedState.get(dataIndex)[field] = isChecked;
100
82
  }));
101
83
  }
102
84
  }
@@ -123,16 +105,37 @@ export function setCellCheckboxState(col, row, checked, table) {
123
105
 
124
106
  export function changeCheckboxOrder(sourceIndex, targetIndex, state) {
125
107
  const {checkedState: checkedState, table: table} = state;
108
+ let source, target;
126
109
  if (table.internalProps.transpose ? (sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0),
127
- targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex),
128
- targetIndex = table.getRecordShowIndexByCell(0, targetIndex)), sourceIndex > targetIndex) {
129
- const sourceRecord = checkedState[sourceIndex];
130
- for (let i = sourceIndex; i > targetIndex; i--) checkedState[i] = checkedState[i - 1];
131
- checkedState[targetIndex] = sourceRecord;
110
+ targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (source = table.getRecordIndexByCell(0, sourceIndex),
111
+ target = table.getRecordIndexByCell(0, targetIndex)), isNumber(source) && isNumber(target)) {
112
+ if (sourceIndex > targetIndex) {
113
+ const sourceRecord = checkedState.get(sourceIndex.toString());
114
+ for (let i = sourceIndex; i > targetIndex; i--) checkedState.set(i.toString(), checkedState.get((i - 1).toString()));
115
+ checkedState.set(targetIndex.toString(), sourceRecord);
116
+ } else if (sourceIndex < targetIndex) {
117
+ const sourceRecord = checkedState.get(sourceIndex.toString());
118
+ for (let i = sourceIndex; i < targetIndex; i++) checkedState.set(i.toString(), checkedState.get((i + 1).toString()));
119
+ checkedState.set(targetIndex.toString(), sourceRecord);
120
+ }
121
+ } else if (isArray(source) && isArray(target)) if ((sourceIndex = source[source.length - 1]) > (targetIndex = target[target.length - 1])) {
122
+ const sourceRecord = checkedState.get(source.toString());
123
+ for (let i = sourceIndex; i > targetIndex; i--) {
124
+ const now = [ ...source ];
125
+ now[now.length - 1] = i;
126
+ const last = [ ...source ];
127
+ last[last.length - 1] = i - 1, checkedState.set(now.toString(), checkedState.get(last.toString()));
128
+ }
129
+ checkedState.set(target.toString(), sourceRecord);
132
130
  } else if (sourceIndex < targetIndex) {
133
- const sourceRecord = checkedState[sourceIndex];
134
- for (let i = sourceIndex; i < targetIndex; i++) checkedState[i] = checkedState[i + 1];
135
- checkedState[targetIndex] = sourceRecord;
131
+ const sourceRecord = checkedState.get(source.toString());
132
+ for (let i = sourceIndex; i < targetIndex; i++) {
133
+ const now = [ ...source ];
134
+ now[now.length - 1] = i;
135
+ const next = [ ...source ];
136
+ next[next.length - 1] = i + 1, checkedState.set(now.toString(), checkedState.get(next.toString()));
137
+ }
138
+ checkedState.set(target.toString(), sourceRecord);
136
139
  }
137
140
  }
138
141
 
@@ -141,8 +144,35 @@ export function getGroupCheckboxState(table) {
141
144
  return dataSource.currentIndexedData.forEach(((indexArr, index) => {
142
145
  if (isArray(indexArr) && indexArr.length === groupKeyLength) {
143
146
  const {vtableOriginIndex: vtableOriginIndex} = dataSource.getRawRecord(indexArr);
144
- result[vtableOriginIndex] = table.stateManager.checkedState[indexArr];
147
+ result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());
145
148
  }
146
149
  })), result;
147
150
  }
151
+
152
+ function initRecordCheckState(state) {
153
+ const table = state.table, start = table.internalProps.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount, end = table.internalProps.transpose ? table.colCount : table.rowCount;
154
+ for (let index = 0; index + start < end; index++) {
155
+ const record = table.dataSource.get(index);
156
+ state._checkboxCellTypeFields.forEach((field => {
157
+ const value = record[field];
158
+ let isChecked;
159
+ if (isObject(value) ? isChecked = value.checked : "boolean" == typeof value && (isChecked = value),
160
+ null == isChecked) {
161
+ const headerCheckFunc = state._headerCheckFuncs[field];
162
+ if (headerCheckFunc) {
163
+ const cellAddr = state.table.getCellAddrByFieldRecord(field, index);
164
+ isChecked = getOrApply(headerCheckFunc, {
165
+ col: cellAddr.col,
166
+ row: cellAddr.row,
167
+ table: state.table,
168
+ context: null,
169
+ value: value
170
+ });
171
+ }
172
+ }
173
+ const dataIndex = state.table.dataSource.getIndexKey(index).toString();
174
+ state.checkedState.get(dataIndex) || state.checkedState.set(dataIndex, {}), state.checkedState.get(dataIndex)[field] = isChecked;
175
+ }));
176
+ }
177
+ }
148
178
  //# sourceMappingURL=checkbox.js.map
@@ -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>;
package/es/state/state.js CHANGED
@@ -50,8 +50,9 @@ import { expendCellRange } from "../tools/merge-range";
50
50
 
51
51
  export class StateManager {
52
52
  constructor(table) {
53
- this.fastScrolling = !1, this.checkedState = [], this.headerCheckedState = {}, this._checkboxCellTypeFields = [],
54
- this._headerCheckFuncs = {}, this.radioState = {}, this.resetInteractionState = debounce((state => {
53
+ this.fastScrolling = !1, this.checkedState = new Map, this.headerCheckedState = {},
54
+ this._checkboxCellTypeFields = [], this._headerCheckFuncs = {}, this.radioState = {},
55
+ this.resetInteractionState = debounce((state => {
55
56
  this.updateInteractionState(null != state ? state : InteractionState.default);
56
57
  }), 100), this.table = table, this.initState(), this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this),
57
58
  this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this);
@@ -733,8 +734,7 @@ export class StateManager {
733
734
  return syncRadioState(col, row, field, radioType, indexInCell, isChecked, this);
734
735
  }
735
736
  changeCheckboxAndRadioOrder(sourceIndex, targetIndex) {
736
- this.checkedState.length && changeCheckboxOrder(sourceIndex, targetIndex, this),
737
- this.radioState.length && changeRadioOrder(sourceIndex, targetIndex, this);
737
+ this.checkedState.size && changeCheckboxOrder(sourceIndex, targetIndex, this), this.radioState.length && changeRadioOrder(sourceIndex, targetIndex, this);
738
738
  }
739
739
  setCustomSelectRanges(customSelectRanges) {
740
740
  deletaCustomSelectRanges(this), addCustomSelectRanges(customSelectRanges, this);