@visactor/vtable 0.24.1 → 0.24.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/cjs/PivotTable.js +52 -16
  2. package/cjs/PivotTable.js.map +1 -1
  3. package/cjs/core/BaseTable.js +1 -1
  4. package/cjs/core/BaseTable.js.map +1 -1
  5. package/cjs/dataset/flatDataToObject.d.ts +8 -3
  6. package/cjs/dataset/flatDataToObject.js +35 -8
  7. package/cjs/dataset/flatDataToObject.js.map +1 -1
  8. package/cjs/edit/edit-manager.js +0 -1
  9. package/cjs/edit/edit-manager.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  14. package/cjs/layout/pivot-header-layout.js +16 -4
  15. package/cjs/layout/pivot-header-layout.js.map +1 -1
  16. package/cjs/state/state.js +1 -1
  17. package/cjs/themes/component.js +1 -1
  18. package/cjs/ts-types/pivot-table/dimension/basic-dimension.d.ts +6 -1
  19. package/cjs/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  20. package/cjs/ts-types/pivot-table/indicator/basic-indicator.d.ts +3 -0
  21. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  22. package/cjs/ts-types/table-engine.d.ts +3 -0
  23. package/cjs/ts-types/table-engine.js.map +1 -1
  24. package/cjs/vrender.js.map +1 -1
  25. package/dist/vtable.js +159 -32
  26. package/dist/vtable.min.js +1 -1
  27. package/es/PivotTable.js +52 -16
  28. package/es/PivotTable.js.map +1 -1
  29. package/es/core/BaseTable.js +1 -1
  30. package/es/core/BaseTable.js.map +1 -1
  31. package/es/dataset/flatDataToObject.d.ts +8 -3
  32. package/es/dataset/flatDataToObject.js +34 -8
  33. package/es/dataset/flatDataToObject.js.map +1 -1
  34. package/es/edit/edit-manager.js +0 -1
  35. package/es/edit/edit-manager.js.map +1 -1
  36. package/es/index.d.ts +1 -1
  37. package/es/index.js +1 -1
  38. package/es/index.js.map +1 -1
  39. package/es/layout/pivot-header-layout.d.ts +1 -0
  40. package/es/layout/pivot-header-layout.js +12 -2
  41. package/es/layout/pivot-header-layout.js.map +1 -1
  42. package/es/state/state.js +1 -1
  43. package/es/themes/component.js +1 -1
  44. package/es/ts-types/pivot-table/dimension/basic-dimension.d.ts +6 -1
  45. package/es/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  46. package/es/ts-types/pivot-table/indicator/basic-indicator.d.ts +3 -0
  47. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  48. package/es/ts-types/table-engine.d.ts +3 -0
  49. package/es/ts-types/table-engine.js.map +1 -1
  50. package/es/vrender.js.map +1 -1
  51. package/package.json +5 -5
@@ -554,4 +554,4 @@ class StateManager {
554
554
  }
555
555
 
556
556
  exports.StateManager = StateManager;
557
- //# sourceMappingURL=state.js.map
557
+ //# sourceMappingURL=state.js.map
@@ -44,4 +44,4 @@ exports.defalutPoptipStyle = {
44
44
  space: 12
45
45
  }
46
46
  };
47
- //# sourceMappingURL=component.js.map
47
+ //# sourceMappingURL=component.js.map
@@ -3,7 +3,9 @@ import type { ICustomLayout } from '../../customLayout';
3
3
  import type { FieldFormat } from '../../table-engine';
4
4
  import type { ColumnIconOption } from '../../icon';
5
5
  import type { MenuListItem } from '../../menu';
6
- import type { CellInfo } from '../../common';
6
+ import type { BaseCellInfo, CellInfo } from '../../common';
7
+ import type { IEditor } from '@visactor/vtable-editors';
8
+ import type { BaseTableAPI } from '../../base-table';
7
9
  export interface IBasicDimension {
8
10
  dimensionKey: string;
9
11
  title: string;
@@ -24,4 +26,7 @@ export interface IBasicDimension {
24
26
  cornerDescription?: string;
25
27
  disableHeaderHover?: boolean;
26
28
  disableHeaderSelect?: boolean;
29
+ headerEditor?: string | IEditor | ((args: BaseCellInfo & {
30
+ table: BaseTableAPI;
31
+ }) => string | IEditor);
27
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/pivot-table/dimension/basic-dimension.ts"],"names":[],"mappings":"","file":"basic-dimension.js","sourcesContent":["import type { ICustomRender, ICustomRenderFuc } from '../../customElement';\nimport type { ICustomLayout } from '../../customLayout';\nimport type { FieldFormat } from '../../table-engine';\nimport type { ColumnIconOption } from '../../icon';\nimport type { MenuListItem } from '../../menu';\nimport type { CellInfo } from '../../common';\n\nexport interface IBasicDimension {\n /** 维度的唯一标识 对应数据集的字段名称 */\n dimensionKey: string; //\n /** 维度名称 角头可配置显示维度名称 */\n title: string;\n /** 维度值的format */\n headerFormat?: FieldFormat;\n /** 定义表头上的icon */\n headerIcon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n /** 维度作为行表头时起作用,表示该维度单元格的宽度 */\n width?: number | string;\n /** 维度作为行表头时起作用,表示该维度单元格的最小宽度 */\n minWidth?: number | string;\n /** 维度作为行表头时起作用,表示该维度单元格的最大宽度 */\n maxWidth?: number | string;\n\n // indicators?: IIndicator[]; //维度下的指标具体展示配置\n\n /** 显示向下钻取图标 点击后会有对应事件 */\n drillDown?: boolean;\n /** 显示向上钻取图标 点击后会有对应事件 */\n drillUp?: boolean;\n /** 单元格显示下拉按钮及下拉菜单*/\n dropDownMenu?: MenuListItem[];\n /** 角头单元格显示下拉按钮及下拉菜单*/\n cornerDropDownMenu?: MenuListItem[];\n /** 是否显示排序icon */\n showSort?: boolean;\n /** 是否可以拖拽表头换位置 */\n dragHeader?: boolean;\n /** 表头自定义渲染内容定义 */\n headerCustomRender?: ICustomRender;\n /** 表头自定义布局元素 */\n headerCustomLayout?: ICustomLayout;\n\n /**\n * 描述信息 hover时提示信息\n */\n description?: string | ((args: CellInfo) => string);\n /**\n * 描述信息 hover时提示信息\n */\n cornerDescription?: string;\n\n // /** 点击表头单元格时连带body整行或整列选中 或仅选中当前单元格,默认或整行或整列选中*/\n // headerSelectMode?: 'inline' | 'cell';\n /** 该维度单元格不支持hover交互行为 */\n disableHeaderHover?: boolean;\n /** 该维度单元格不支持选中 */\n disableHeaderSelect?: boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/ts-types/pivot-table/dimension/basic-dimension.ts"],"names":[],"mappings":"","file":"basic-dimension.js","sourcesContent":["import type { ICustomRender, ICustomRenderFuc } from '../../customElement';\nimport type { ICustomLayout } from '../../customLayout';\nimport type { FieldFormat } from '../../table-engine';\nimport type { ColumnIconOption } from '../../icon';\nimport type { MenuListItem } from '../../menu';\nimport type { BaseCellInfo, CellInfo } from '../../common';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { BaseTableAPI } from '../../base-table';\n\nexport interface IBasicDimension {\n /** 维度的唯一标识 对应数据集的字段名称 */\n dimensionKey: string; //\n /** 维度名称 角头可配置显示维度名称 */\n title: string;\n /** 维度值的format */\n headerFormat?: FieldFormat;\n /** 定义表头上的icon */\n headerIcon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n /** 维度作为行表头时起作用,表示该维度单元格的宽度 */\n width?: number | string;\n /** 维度作为行表头时起作用,表示该维度单元格的最小宽度 */\n minWidth?: number | string;\n /** 维度作为行表头时起作用,表示该维度单元格的最大宽度 */\n maxWidth?: number | string;\n\n // indicators?: IIndicator[]; //维度下的指标具体展示配置\n\n /** 显示向下钻取图标 点击后会有对应事件 */\n drillDown?: boolean;\n /** 显示向上钻取图标 点击后会有对应事件 */\n drillUp?: boolean;\n /** 单元格显示下拉按钮及下拉菜单*/\n dropDownMenu?: MenuListItem[];\n /** 角头单元格显示下拉按钮及下拉菜单*/\n cornerDropDownMenu?: MenuListItem[];\n /** 是否显示排序icon */\n showSort?: boolean;\n /** 是否可以拖拽表头换位置 */\n dragHeader?: boolean;\n /** 表头自定义渲染内容定义 */\n headerCustomRender?: ICustomRender;\n /** 表头自定义布局元素 */\n headerCustomLayout?: ICustomLayout;\n\n /**\n * 描述信息 hover时提示信息\n */\n description?: string | ((args: CellInfo) => string);\n /**\n * 描述信息 hover时提示信息\n */\n cornerDescription?: string;\n\n // /** 点击表头单元格时连带body整行或整列选中 或仅选中当前单元格,默认或整行或整列选中*/\n // headerSelectMode?: 'inline' | 'cell';\n /** 该维度单元格不支持hover交互行为 */\n disableHeaderHover?: boolean;\n /** 该维度单元格不支持选中 */\n disableHeaderSelect?: boolean;\n /** 设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\n"]}
@@ -20,6 +20,9 @@ export interface IBasicHeaderIndicator {
20
20
  }) => string | IEditor);
21
21
  disableHeaderHover?: boolean;
22
22
  disableHeaderSelect?: boolean;
23
+ headerEditor?: string | IEditor | ((args: BaseCellInfo & {
24
+ table: BaseTableAPI;
25
+ }) => string | IEditor);
23
26
  }
24
27
  export interface IBasicColumnIndicator {
25
28
  width?: string | number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/pivot-table/indicator/basic-indicator.ts"],"names":[],"mappings":"","file":"basic-indicator.js","sourcesContent":["import type { ICustomRender } from '../../customElement';\nimport type { ICustomLayout } from '../../customLayout';\nimport type { FieldFormat } from '../../table-engine';\nimport type { ColumnIconOption } from '../../icon';\nimport type { MenuListItem } from '../../menu';\nimport type { BaseCellInfo, CellInfo } from '../../common';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { BaseTableAPI } from '../../base-table';\n\nexport interface IBasicHeaderIndicator {\n // 单种指标属性配置\n indicatorKey: string; // 指标的唯一标识 用处对应到具体数据查询阶段 flat数据\n title?: string; // 指标名\n // headerType?: HeaderTypeOption | null; //指标表头类型\n // headerStyle?: HeaderStyleOption | null; //指标名称在表头部分显示类型\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n\n // linkJump?: boolean;\n // linkDetect?: boolean;\n // templateLink?: string;\n\n // chartSpec?: any | ((arg0: CustomRenderFunctionArg) => any);\n // chartModule?: string; // 如果配置了columnType未chart,chartType来指定图表组件类型 如'vchart' 需要从预先register的图表类型获取\n // sparklineSpec?: SparklineSpec | ((arg0: CustomRenderFunctionArg) => SparklineSpec);\n\n dropDownMenu?: MenuListItem[]; // 针对单独指标上配置下拉按钮\n showSort?: boolean; // 否显示排序icon\n disableColumnResize?: boolean; // 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n\n /** 指标名称表头自定义渲染内容定义 */\n headerCustomRender?: ICustomRender; // header单元格的自定义内容\n /** 指标名称表头自定义布局元素 */\n headerCustomLayout?: ICustomLayout;\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n\n // /** 点击表头单元格时连带body整行或整列选中 或仅选中当前单元格,默认或整行或整列选中*/\n // headerSelectMode?: 'inline' | 'cell';\n /** 该指标表头单元格不支持hover交互行为 */\n disableHeaderHover?: boolean;\n /** 该指标表头单元格不支持选中 */\n disableHeaderSelect?: boolean;\n}\n\nexport interface IBasicColumnIndicator {\n width?: string | number;\n minWidth?: number | string;\n maxWidth?: number | string;\n format?: FieldFormat; // 指标值格式化\n headerFormat?: FieldFormat; // 指标名称格式化\n // cellType?: ColumnTypeOption | BaseColumn<any, any> | null; // body指标值显示类型\n // style?: ColumnStyleOption | null; // body部分指标值显示样式\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n\n /** 指标值body单元格自定义渲染内容定义 */\n customRender?: ICustomRender; // body单元格的自定义内容\n /** 指标值body单元格自定义布局元素 */\n customLayout?: ICustomLayout;\n\n /** 该指标内容不支持hover交互行为 */\n disableHover?: boolean;\n /** 该指标内容不支持选中 */\n disableSelect?: boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/ts-types/pivot-table/indicator/basic-indicator.ts"],"names":[],"mappings":"","file":"basic-indicator.js","sourcesContent":["import type { ICustomRender } from '../../customElement';\nimport type { ICustomLayout } from '../../customLayout';\nimport type { FieldFormat } from '../../table-engine';\nimport type { ColumnIconOption } from '../../icon';\nimport type { MenuListItem } from '../../menu';\nimport type { BaseCellInfo, CellInfo } from '../../common';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { BaseTableAPI } from '../../base-table';\n\nexport interface IBasicHeaderIndicator {\n // 单种指标属性配置\n indicatorKey: string; // 指标的唯一标识 用处对应到具体数据查询阶段 flat数据\n title?: string; // 指标名\n // headerType?: HeaderTypeOption | null; //指标表头类型\n // headerStyle?: HeaderStyleOption | null; //指标名称在表头部分显示类型\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n\n // linkJump?: boolean;\n // linkDetect?: boolean;\n // templateLink?: string;\n\n // chartSpec?: any | ((arg0: CustomRenderFunctionArg) => any);\n // chartModule?: string; // 如果配置了columnType未chart,chartType来指定图表组件类型 如'vchart' 需要从预先register的图表类型获取\n // sparklineSpec?: SparklineSpec | ((arg0: CustomRenderFunctionArg) => SparklineSpec);\n\n dropDownMenu?: MenuListItem[]; // 针对单独指标上配置下拉按钮\n showSort?: boolean; // 否显示排序icon\n disableColumnResize?: boolean; // 是否禁用调整列宽,如果是转置表格或者是透视表的指标是行方向指定 那该配置不生效\n\n /** 指标名称表头自定义渲染内容定义 */\n headerCustomRender?: ICustomRender; // header单元格的自定义内容\n /** 指标名称表头自定义布局元素 */\n headerCustomLayout?: ICustomLayout;\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n\n // /** 点击表头单元格时连带body整行或整列选中 或仅选中当前单元格,默认或整行或整列选中*/\n // headerSelectMode?: 'inline' | 'cell';\n /** 该指标表头单元格不支持hover交互行为 */\n disableHeaderHover?: boolean;\n /** 该指标表头单元格不支持选中 */\n disableHeaderSelect?: boolean;\n /** 设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\n\nexport interface IBasicColumnIndicator {\n width?: string | number;\n minWidth?: number | string;\n maxWidth?: number | string;\n format?: FieldFormat; // 指标值格式化\n headerFormat?: FieldFormat; // 指标名称格式化\n // cellType?: ColumnTypeOption | BaseColumn<any, any> | null; // body指标值显示类型\n // style?: ColumnStyleOption | null; // body部分指标值显示样式\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n\n /** 指标值body单元格自定义渲染内容定义 */\n customRender?: ICustomRender; // body单元格的自定义内容\n /** 指标值body单元格自定义布局元素 */\n customLayout?: ICustomLayout;\n\n /** 该指标内容不支持hover交互行为 */\n disableHover?: boolean;\n /** 该指标内容不支持选中 */\n disableSelect?: boolean;\n}\n"]}
@@ -194,6 +194,9 @@ export interface PivotTableConstructorOptions extends BaseTableConstructorOption
194
194
  editor?: string | IEditor | ((args: BaseCellInfo & {
195
195
  table: BaseTableAPI;
196
196
  }) => string | IEditor);
197
+ headerEditor?: string | IEditor | ((args: BaseCellInfo & {
198
+ table: BaseTableAPI;
199
+ }) => string | IEditor);
197
200
  }
198
201
  export interface PivotChartConstructorOptions extends BaseTableConstructorOptions {
199
202
  records?: any[] | Record<string, any[]>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/table-engine.ts"],"names":[],"mappings":";;;AAwdA,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder, BaseCellInfo, CellInfo } from './common';\nimport type { ColumnIconOption, SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions, ListTableProtected } from './base-table';\nimport type {\n Aggregation,\n AggregationType,\n CustomAggregation,\n FilterRules,\n IPivotTableDataConfig\n} from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type {\n IChartIndicator,\n IColumnDimension,\n ICornerDefine,\n IDimension,\n IIndicator,\n IRowDimension,\n ITitleDefine\n} from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\nimport type { ICellAxisOption, ITableAxisOption } from './component/axis';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ITextStyleOption } from '../body-helper/style';\nimport type { DataSource } from '../data';\nimport type { EditManeger } from '../edit/edit-manager';\nimport type { ICustomRender } from './customElement';\nimport type { ICustomLayout } from './customLayout';\nimport type { StylePropertyFunctionArg } from './style-define';\n\nexport interface CellAddress {\n col: number;\n row: number;\n}\nexport interface CellAddressWithBound {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any, col?: number, row?: number, table?: BaseTableAPI) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';\nexport type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';\nexport type WidthAdaptiveModeDef = 'only-body' | 'all';\nexport type HeightAdaptiveModeDef = 'only-body' | 'all';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\n/** 单元格所处表格哪部分 */\nexport type CellLocation = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';\nexport type CellSubLocation =\n | 'body'\n | 'rowHeader'\n | 'columnHeader'\n | 'cornerHeader'\n | 'bottomFrozen'\n | 'rightFrozen'\n | 'rightTopCorner'\n | 'leftBottomCorner'\n | 'rightBottomCorner'\n | 'rowSeriesNumber'\n | 'colSeriesNumber';\n\nexport interface TableKeyboardOptions {\n /** tab键 默认为true。开启tab键移动选中单元格,如果当前是在编辑单元格 则移动到下一个单元格也是编辑状态 */\n moveFocusCellOnTab?: boolean;\n /** enter键 默认true 如果选中单元格可编辑则进入单元格编辑*/\n editCellOnEnter?: boolean;\n /** 默认不开启即false。开启这个配置的话,如果当前是在编辑中的单元格,方向键可以移动到下个单元格并进入编辑状态,而不是编辑文本内字符串的光标移动。上下左右方向键切换选中单元格不受该配置影响,*/\n moveEditCellOnArrowKeys?: boolean;\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 默认:false*/\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n /** 快捷键粘贴,默认:false 。粘贴内容到指定位置(即粘贴前要有选中的单元格);支持批量粘贴;粘贴生效仅针对配置了编辑 editor 的单元格;*/\n pasteValueToCell?: boolean; //paste是和浏览器的快捷键一致的\n}\nexport interface TableEventOptions {\n /** 是否阻止右键的默认行为, 默认为true。*/\n preventDefaultContextMenu?: boolean;\n}\n\nexport interface IRowSeriesNumber {\n width?: number | 'auto';\n // align?: 'left' | 'right';\n // span?: number | 'dependOnNear';\n title?: string;\n // field?: FieldDef;\n format?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n cellType?: 'text' | 'link' | 'image' | 'video' | 'checkbox';\n style?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerStyle?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerIcon?: string | ColumnIconOption | (string | ColumnIconOption)[];\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n // /** 选中整行或者全选时 是否包括序号部分 */\n // selectRangeInclude?: boolean;\n /** 是否可拖拽顺序 */\n dragOrder?: boolean;\n}\n\nexport interface ColumnSeriesNumber {\n enable: boolean;\n align?: 'top' | 'bottom';\n span?: number | 'dependOnNear';\n title?: string;\n field?: FieldDef;\n format?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n cellType?: 'text' | 'link' | 'image' | 'video' | 'checkbox';\n style?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerStyle?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n /** 选中整行或者全选时 是否包括序号部分 */\n selectRangeInclude?: boolean;\n /** 是否可拖拽顺序 */\n dragOrder?: boolean;\n /** 是否显示调换顺序的图标 */\n showDragOrderIcon?: boolean;\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F, col: number, row: number, table: BaseTableAPI) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePagination: (pagination: IPagination) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n hierarchyExpandLevel: number;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagination {\n /** 数据总条数 透视表中这个数据会自动加上 不需用户传入*/\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 传入用户实例化的数据对象 目前不完善\n */\n dataSource?: DataSource;\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n /** 同层级的结点是否按文字对齐 如没有收起展开图标的节点和有图标的节点文字对齐 默认false */\n hierarchyTextStartAlignment?: boolean;\n /** 分页配置 */\n pagination?: IPagination;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n // dataConfig?: IListTableDataConfig;\n /** 全局设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 全局设置编辑器 */\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 编辑触发时机 双击事件 单击事件 api手动开启编辑。默认为双击'doubleclick' */\n editCellTrigger?: 'doubleclick' | 'click' | 'api';\n /** 拖拽表头移动位置 针对冻结部分的规则 默认为fixedFrozenCount\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n aggregation?:\n | Aggregation\n | CustomAggregation\n | (Aggregation | CustomAggregation)[]\n | ((args: {\n col: number;\n field: string;\n }) => Aggregation | CustomAggregation | (Aggregation | CustomAggregation)[] | null);\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n editorManager: EditManeger;\n sortState: SortState[] | SortState | null;\n // /** 数据分析相关配置 */\n // dataConfig?: IListTableDataConfig;\n internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell?: boolean) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][], workOnEditableCell?: boolean) => void;\n getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n //#region 编辑器相关demo\n /** 获取单元格配置的编辑器 */\n getEditor: (col: number, row: number) => IEditor;\n /** 开启单元格编辑 */\n startEditCell: (col?: number, row?: number) => void;\n /** 结束编辑 */\n completeEditCell: () => void;\n //#endregion\n addRecord: (record: any, recordIndex?: number) => void;\n addRecords: (records: any[], recordIndex?: number) => void;\n deleteRecords: (recordIndexs: number[]) => void;\n updateRecords: (records: any[], recordIndexs: number[]) => void;\n updateFilterRules: (filterRules: FilterRules) => void;\n getAggregateValuesByField: (field: string | number) => {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[];\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 同层级的结点是否按文字对齐 如没有收起展开图标的节点和有图标的节点文字对齐 默认false */\n rowHierarchyTextStartAlignment?: boolean;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n dataConfig?: IPivotTableDataConfig;\n\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n /** 分页配置 */\n pagination?: IPagination;\n\n extensionRows?: IExtensionRowDefine[];\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\nexport interface PivotChartConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合, 平坦数据集合。另外一种特殊方式是传入分组后的数据,分组依据为指标\n */\n records?: any[] | Record<string, any[]>;\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IChartIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n\n axes?: ITableAxisOption[];\n}\nexport interface PivotTableAPI extends BaseTableAPI {\n records?: any;\n options: PivotTableConstructorOptions;\n editorManager: EditManeger;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell: boolean) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][], workOnEditableCell: boolean) => void;\n}\nexport interface PivotChartAPI extends BaseTableAPI {\n records?: any | Record<string, any[]>;\n options: PivotChartConstructorOptions;\n // internalProps: PivotTableProtected;\n isListTable: () => false;\n isPivotTable: () => true;\n}\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | true;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n\nexport interface IExtensionRowDefine {\n rows: (IRowDimension | string)[];\n rowTree: IHeaderTreeDefine[] | ((args: { dimensionKey: string | number; value: string }[]) => IHeaderTreeDefine[]);\n}\n\nexport type StickCell = { col: number; row: number; dx: number; dy: number };\n\nexport type CustomMergeCell = (col: number, row: number, table: BaseTableAPI) => undefined | CustomMerge;\nexport type CustomMerge = {\n range: CellRange;\n text?: string;\n style?: ITextStyleOption;\n customLayout?: ICustomLayout;\n customRender?: ICustomRender;\n};\n"]}
1
+ {"version":3,"sources":["../src/ts-types/table-engine.ts"],"names":[],"mappings":";;;AA0dA,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB","file":"table-engine.js","sourcesContent":["import type { RectProps, MaybePromiseOrUndefined, IDimensionInfo, SortOrder, BaseCellInfo, CellInfo } from './common';\nimport type { ColumnIconOption, SvgIcon } from './icon';\nexport type { HeaderData } from './list-table/layout-map/api';\nexport type LayoutObjectId = number | string;\nimport type { Rect } from '../tools/Rect';\nimport type { BaseTableAPI, BaseTableConstructorOptions, ListTableProtected } from './base-table';\nimport type {\n Aggregation,\n AggregationType,\n CustomAggregation,\n FilterRules,\n IPivotTableDataConfig\n} from './new-data-set';\nimport type { Either } from '../tools/helper';\nimport type {\n IChartIndicator,\n IColumnDimension,\n ICornerDefine,\n IDimension,\n IIndicator,\n IRowDimension,\n ITitleDefine\n} from './pivot-table';\nimport type { ColumnsDefine } from './list-table';\nimport type { ICellAxisOption, ITableAxisOption } from './component/axis';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ITextStyleOption } from '../body-helper/style';\nimport type { DataSource } from '../data';\nimport type { EditManeger } from '../edit/edit-manager';\nimport type { ICustomRender } from './customElement';\nimport type { ICustomLayout } from './customLayout';\nimport type { StylePropertyFunctionArg } from './style-define';\n\nexport interface CellAddress {\n col: number;\n row: number;\n}\nexport interface CellAddressWithBound {\n col: number;\n row: number;\n rect?: RectProps;\n x?: number;\n y?: number;\n}\nexport interface CellRange {\n start: CellAddress;\n end: CellAddress;\n}\n\nexport type FieldGetter = (record: any, col?: number, row?: number, table?: BaseTableAPI) => any;\nexport type FieldSetter = (record: any, value: any) => void;\nexport interface FieldAssessor {\n get: FieldGetter;\n set: FieldSetter;\n}\n\nexport type FieldDef = string | number | string[];\nexport type FieldKeyDef = string | number;\nexport type FieldFormat = FieldGetter | FieldAssessor;\n\nexport type FieldData = MaybePromiseOrUndefined;\n\nexport type WidthModeDef = 'standard' | 'adaptive' | 'autoWidth';\nexport type HeightModeDef = 'standard' | 'adaptive' | 'autoHeight';\nexport type WidthAdaptiveModeDef = 'only-body' | 'all';\nexport type HeightAdaptiveModeDef = 'only-body' | 'all';\nexport type ShowColumnRowType = 'column' | 'row' | 'none';\n/** 单元格所处表格哪部分 */\nexport type CellLocation = 'body' | 'rowHeader' | 'columnHeader' | 'cornerHeader';\nexport type CellSubLocation =\n | 'body'\n | 'rowHeader'\n | 'columnHeader'\n | 'cornerHeader'\n | 'bottomFrozen'\n | 'rightFrozen'\n | 'rightTopCorner'\n | 'leftBottomCorner'\n | 'rightBottomCorner'\n | 'rowSeriesNumber'\n | 'colSeriesNumber';\n\nexport interface TableKeyboardOptions {\n /** tab键 默认为true。开启tab键移动选中单元格,如果当前是在编辑单元格 则移动到下一个单元格也是编辑状态 */\n moveFocusCellOnTab?: boolean;\n /** enter键 默认true 如果选中单元格可编辑则进入单元格编辑*/\n editCellOnEnter?: boolean;\n /** 默认不开启即false。开启这个配置的话,如果当前是在编辑中的单元格,方向键可以移动到下个单元格并进入编辑状态,而不是编辑文本内字符串的光标移动。上下左右方向键切换选中单元格不受该配置影响,*/\n moveEditCellOnArrowKeys?: boolean;\n /** 开启快捷键全选 默认:false */\n selectAllOnCtrlA?: boolean;\n /** 快捷键复制 默认:false*/\n copySelected?: boolean; //这个copy是和浏览器的快捷键一致的\n /** 快捷键粘贴,默认:false 。粘贴内容到指定位置(即粘贴前要有选中的单元格);支持批量粘贴;粘贴生效仅针对配置了编辑 editor 的单元格;*/\n pasteValueToCell?: boolean; //paste是和浏览器的快捷键一致的\n}\nexport interface TableEventOptions {\n /** 是否阻止右键的默认行为, 默认为true。*/\n preventDefaultContextMenu?: boolean;\n}\n\nexport interface IRowSeriesNumber {\n width?: number | 'auto';\n // align?: 'left' | 'right';\n // span?: number | 'dependOnNear';\n title?: string;\n // field?: FieldDef;\n format?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n cellType?: 'text' | 'link' | 'image' | 'video' | 'checkbox';\n style?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerStyle?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerIcon?: string | ColumnIconOption | (string | ColumnIconOption)[];\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n // /** 选中整行或者全选时 是否包括序号部分 */\n // selectRangeInclude?: boolean;\n /** 是否可拖拽顺序 */\n dragOrder?: boolean;\n}\n\nexport interface ColumnSeriesNumber {\n enable: boolean;\n align?: 'top' | 'bottom';\n span?: number | 'dependOnNear';\n title?: string;\n field?: FieldDef;\n format?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n cellType?: 'text' | 'link' | 'image' | 'video' | 'checkbox';\n style?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n headerStyle?: ITextStyleOption | ((styleArg: StylePropertyFunctionArg) => ITextStyleOption);\n icon?:\n | string\n | ColumnIconOption\n | (string | ColumnIconOption)[]\n | ((args: CellInfo) => string | ColumnIconOption | (string | ColumnIconOption)[]);\n /** 选中整行或者全选时 是否包括序号部分 */\n selectRangeInclude?: boolean;\n /** 是否可拖拽顺序 */\n dragOrder?: boolean;\n /** 是否显示调换顺序的图标 */\n showDragOrderIcon?: boolean;\n}\nexport interface DataSourceAPI {\n clearCurrentIndexedData: () => void;\n length: number;\n get: (index: number) => MaybePromiseOrUndefined;\n getField: <F extends FieldDef>(index: number, field: F, col: number, row: number, table: BaseTableAPI) => FieldData;\n hasField: (index: number, field: FieldDef) => boolean;\n sort: (field: FieldDef, order: SortOrder, orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1) => void;\n clearSortedMap: () => void;\n updatePagination: (pagination: IPagination) => void;\n getIndexKey: (index: number) => number | number[];\n /** 数据是否为树形结构 且可以展开收起 */\n hierarchyExpandLevel: number;\n}\n\nexport interface SortState {\n /** 排序依据字段 */\n field: FieldDef;\n /** 排序规则 */\n order: SortOrder;\n}\nexport interface PivotSortState {\n col: number;\n row: number;\n order: SortOrder;\n}\n\n/**\n * 分页配置\n */\nexport interface IPagination {\n /** 数据总条数 透视表中这个数据会自动加上 不需用户传入*/\n totalCount?: number;\n /** 每页显示数据条数 */\n perPageCount: number;\n /** 每页显示条数 */\n currentPage?: number;\n}\nexport type HeaderValues = Map<any, any>;\nexport interface ListTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 传入用户实例化的数据对象 目前不完善\n */\n dataSource?: DataSource;\n /**\n * 是否显示表头\n */\n showHeader?: boolean;\n /**\n * Simple header property\n */\n columns?: ColumnsDefine; //请不要再这个上面修改配置,这里相当于是一个原始值备份,有一个内部专用的protectspace.columns\n /**\n *@deprecated 已废弃 请使用columns\n */\n header?: ColumnsDefine;\n\n transpose?: boolean; //是否转置\n /**\n * 展示为tree的列 层级缩进值\n */\n hierarchyIndent?: number;\n /** 展开层数 默认为1只显示根节点*/\n hierarchyExpandLevel?: number;\n /** 同层级的结点是否按文字对齐 如没有收起展开图标的节点和有图标的节点文字对齐 默认false */\n hierarchyTextStartAlignment?: boolean;\n /** 分页配置 */\n pagination?: IPagination;\n\n /**\n * 排序状态\n */\n sortState?: SortState | SortState[];\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n // dataConfig?: IListTableDataConfig;\n /** 全局设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 全局设置编辑器 */\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 编辑触发时机 双击事件 单击事件 api手动开启编辑。默认为双击'doubleclick' */\n editCellTrigger?: 'doubleclick' | 'click' | 'api';\n /** 拖拽表头移动位置 针对冻结部分的规则 默认为fixedFrozenCount\n * \"disabled\"(禁止调整冻结列位置):不允许其他列的表头移入冻结列,也不允许冻结列移出,冻结列保持不变。\n * \"adjustFrozenCount\"(根据交互结果调整冻结数量):允许其他列的表头移入冻结列,及冻结列移出,并根据拖拽的动作调整冻结列的数量。当其他列的表头被拖拽进入冻结列位置时,冻结列数量增加;当其他列的表头被拖拽移出冻结列位置时,冻结列数量减少。\n * \"fixedFrozenCount\"(可调整冻结列,并维持冻结数量不变):允许自由拖拽其他列的表头移入或移出冻结列位置,同时保持冻结列的数量不变。\n */\n frozenColDragHeaderMode?: 'disabled' | 'adjustFrozenCount' | 'fixedFrozenCount';\n aggregation?:\n | Aggregation\n | CustomAggregation\n | (Aggregation | CustomAggregation)[]\n | ((args: {\n col: number;\n field: string;\n }) => Aggregation | CustomAggregation | (Aggregation | CustomAggregation)[] | null);\n}\n\nexport interface ListTableAPI extends BaseTableAPI {\n options: ListTableConstructorOptions;\n editorManager: EditManeger;\n sortState: SortState[] | SortState | null;\n // /** 数据分析相关配置 */\n // dataConfig?: IListTableDataConfig;\n internalProps: ListTableProtected;\n isListTable: () => true;\n isPivotTable: () => false;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell?: boolean) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][], workOnEditableCell?: boolean) => void;\n getFieldData: (field: FieldDef | FieldFormat | undefined, col: number, row: number) => FieldData;\n //#region 编辑器相关demo\n /** 获取单元格配置的编辑器 */\n getEditor: (col: number, row: number) => IEditor;\n /** 开启单元格编辑 */\n startEditCell: (col?: number, row?: number) => void;\n /** 结束编辑 */\n completeEditCell: () => void;\n //#endregion\n addRecord: (record: any, recordIndex?: number) => void;\n addRecords: (records: any[], recordIndex?: number) => void;\n deleteRecords: (recordIndexs: number[]) => void;\n updateRecords: (records: any[], recordIndexs: number[]) => void;\n updateFilterRules: (filterRules: FilterRules) => void;\n getAggregateValuesByField: (field: string | number) => {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[];\n}\nexport interface PivotTableConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 设置排序状态,只对应按钮展示效果 无数据排序逻辑 */\n pivotSortState?: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[];\n\n //#region layout中挪到外层的属性\n /**层级维度结构显示形式 */\n rowHierarchyType?: 'grid' | 'tree';\n /**展开层数 */\n rowExpandLevel?: number;\n /**子层级维度缩进距离 */\n rowHierarchyIndent?: number;\n /** 同层级的结点是否按文字对齐 如没有收起展开图标的节点和有图标的节点文字对齐 默认false */\n rowHierarchyTextStartAlignment?: boolean;\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 指标在具体维度展示的层级顺序,从0开始 ———有数据分析的透视表才需要配置这个 */\n indicatorIndex?: number;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 指标维度key 注意非具体指标key 数据分析的透视表才需要配置这个 */\n // indicatorDimensionKey?: string;\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n //#endregion\n /** 数据分析相关配置 enableDataAnalysis开启后该配置才会有效 */\n dataConfig?: IPivotTableDataConfig;\n\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n /** 分页配置 */\n pagination?: IPagination;\n\n extensionRows?: IExtensionRowDefine[];\n editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n /** 全局设置表头编辑器 */\n headerEditor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);\n}\nexport interface PivotChartConstructorOptions extends BaseTableConstructorOptions {\n /**\n * 数据集合, 平坦数据集合。另外一种特殊方式是传入分组后的数据,分组依据为指标\n */\n records?: any[] | Record<string, any[]>;\n /**\n * 调整列宽的生效范围:'column' | 'indicator' | 'all' | 'indicatorGroup',单列|按指标|所有列|属于同一维度值的多个指标\n */\n columnResizeType?: 'column' | 'indicator' | 'all' | 'indicatorGroup';\n /** 列表头维度结构 */\n columnTree?: IHeaderTreeDefine[];\n /** 行表头维度结构 */\n rowTree?: IHeaderTreeDefine[];\n /** 定义各个维度和各个指标的具体配置项和样式定义 rows 和 dimension 代替掉 */\n // dimensions?: IDimension[];\n\n /** 定义行上各个维度具体配置项和样式定义 */\n rows?: (IRowDimension | string)[]; // (string | IDimension)[]; 后续支持数据分析的透视表 支持string配置\n /** 定义列上各个维度具体配置项和样式定义 */\n columns?: (IColumnDimension | string)[]; // (string | IDimension)[];\n /** 定义指标具体配置项和样式定义 包含表头和body的定义*/\n indicators?: (IChartIndicator | string)[]; // (string | IIndicator)[];\n\n /** 指标以列展示 ———有数据分析的透视表才需要配置这个 */\n indicatorsAsCol?: boolean;\n /** 是否隐藏指标名称 */\n hideIndicatorName?: boolean; //\n /** 角头单元格配置项和样式定义 */\n corner?: ICornerDefine;\n /**\n * boolean 是否显示列维度值表头\n */\n showColumnHeader?: boolean;\n /**\n * boolean 是否显示行维度值表头\n */\n showRowHeader?: boolean;\n /**\n * 列表头增加一行来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n columnHeaderTitle?: ITitleDefine;\n /**\n * 行表头的增加一列来显示维度名称 可以自定义或者显示dimension.title组合名\n */\n rowHeaderTitle?: ITitleDefine;\n /** 指标标题 用于显示到角头的值*/\n indicatorTitle?: string;\n\n axes?: ITableAxisOption[];\n}\nexport interface PivotTableAPI extends BaseTableAPI {\n records?: any;\n options: PivotTableConstructorOptions;\n editorManager: EditManeger;\n // internalProps: PivotTableProtected;\n pivotSortState: PivotSortState[];\n isListTable: () => false;\n isPivotTable: () => true;\n getPivotSortState: (col: number, row: number) => SortOrder;\n toggleHierarchyState: (col: number, row: number) => void;\n /** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */\n changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell: boolean) => void;\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n */\n changeCellValues: (col: number, row: number, values: (string | number)[][], workOnEditableCell: boolean) => void;\n}\nexport interface PivotChartAPI extends BaseTableAPI {\n records?: any | Record<string, any[]>;\n options: PivotChartConstructorOptions;\n // internalProps: PivotTableProtected;\n isListTable: () => false;\n isPivotTable: () => true;\n}\nexport type SetPasteValueTestData = CellAddress & {\n table: BaseTableAPI;\n record: any;\n value: string;\n\n oldValue: any;\n};\n\nexport interface InlineAPI {\n width: (arg: { ctx: CanvasRenderingContext2D }) => number;\n font: () => string | null;\n color: () => string | null;\n canDraw: () => boolean;\n onReady: (callback: Function) => void;\n\n draw: (opt: any) => void;\n canBreak: () => boolean;\n}\n\nexport interface CellContext {\n readonly col: number;\n readonly row: number;\n /**format之后的值 */\n readonly value: FieldData;\n /**原始值 */\n readonly dataValue: FieldData;\n showIcon?: SvgIcon;\n getContext: () => CanvasRenderingContext2D;\n toCurrentContext: () => CellContext;\n getDrawRect: () => RectProps | null;\n getRect: () => RectProps;\n setRectFilter: (rectFilter: (base: RectProps) => RectProps) => void;\n updateRect: (rect: Rect | RectProps) => void;\n updateDrawRect: (rect: Rect | RectProps) => void;\n}\n\nexport enum Placement {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right'\n}\n\nexport enum HierarchyState {\n expand = 'expand',\n collapse = 'collapse',\n none = 'none'\n}\nexport type IHeaderTreeDefine = Either<IDimensionHeaderNode, IIndicatorHeaderNode>;\nexport interface IIndicatorHeaderNode {\n /**\n * 指标的key值 对应数据集的字段名\n */\n indicatorKey: string | number;\n /**\n * 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示\n */\n value?: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | null;\n}\nexport interface IDimensionHeaderNode {\n /**\n * 维度的唯一标识,对应数据集的字段名称\n */\n dimensionKey: string | number;\n /** 维度成员值 */\n value: string;\n /** 维度成员下的子维度树结构 */\n children?: IHeaderTreeDefine[] | true;\n /** 折叠状态 TODO */\n hierarchyState?: HierarchyState;\n}\n\nexport interface IExtensionRowDefine {\n rows: (IRowDimension | string)[];\n rowTree: IHeaderTreeDefine[] | ((args: { dimensionKey: string | number; value: string }[]) => IHeaderTreeDefine[]);\n}\n\nexport type StickCell = { col: number; row: number; dx: number; dy: number };\n\nexport type CustomMergeCell = (col: number, row: number, table: BaseTableAPI) => undefined | CustomMerge;\nexport type CustomMerge = {\n range: CellRange;\n text?: string;\n style?: ITextStyleOption;\n customLayout?: ICustomLayout;\n customRender?: ICustomRender;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kCAAgC;AAChC,yDAA8F;AAC9F,yDAAqE;AACrE,yDAmBgC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,SAAgB,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,IAAA,+BAAgB,GAAE,CAAC;IAEnB,IAAI,IAAA,2BAAY,GAAE,EAAE;QAClB,IAAA,6BAAc,EAAC,wBAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,IAAA,wBAAS,GAAE,EAAE;QACtB,IAAA,0BAAW,EAAC,wBAAS,CAAC,CAAC;KACxB;IACD,IAAA,0BAAW,GAAE,CAAC;IACd,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,8BAAe,GAAE,CAAC;IAClB,IAAA,gCAAiB,GAAE,CAAC;IACpB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,+BAAgB,GAAE,CAAC;IACnB,IAAA,iCAAkB,GAAE,CAAC;IACrB,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,+BAAgB,GAAE,CAAC;AACrB,CAAC;AA/BD,gDA+BC;AAED,yDAAuC;AACvC,yDAAuC","file":"vrender.js","sourcesContent":["import '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule } from '@visactor/vrender-core';\nimport { loadBrowserEnv, loadNodeEnv } from '@visactor/vrender-kits';\nimport {\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"0.24.1\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n registerArc3d();\n registerArea();\n registerCircle();\n registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n registerPath();\n registerPolygon();\n registerPyramid3d();\n registerRect();\n registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerWrapText();\n}\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\n"]}
1
+ {"version":3,"sources":["../src/vrender.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kCAAgC;AAChC,yDAA8F;AAC9F,yDAAqE;AACrE,yDAmBgC;AAIhC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,SAAgB,kBAAkB;IAChC,IAAI,QAAQ,EAAE;QACZ,OAAO;KACR;IACD,QAAQ,GAAG,IAAI,CAAC;IAEhB,IAAA,+BAAgB,GAAE,CAAC;IAEnB,IAAI,IAAA,2BAAY,GAAE,EAAE;QAClB,IAAA,6BAAc,EAAC,wBAAS,CAAC,CAAC;KAC3B;SAAM,IAAI,IAAA,wBAAS,GAAE,EAAE;QACtB,IAAA,0BAAW,EAAC,wBAAS,CAAC,CAAC;KACxB;IACD,IAAA,0BAAW,GAAE,CAAC;IACd,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,8BAAe,GAAE,CAAC;IAClB,IAAA,gCAAiB,GAAE,CAAC;IACpB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,+BAAgB,GAAE,CAAC;IACnB,IAAA,iCAAkB,GAAE,CAAC;IACrB,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,+BAAgB,GAAE,CAAC;AACrB,CAAC;AA/BD,gDA+BC;AAED,yDAAuC;AACvC,yDAAuC","file":"vrender.js","sourcesContent":["import '@visactor/vrender-core';\nimport { container, isBrowserEnv, isNodeEnv, preLoadAllModule } from '@visactor/vrender-core';\nimport { loadBrowserEnv, loadNodeEnv } from '@visactor/vrender-kits';\nimport {\n registerArc,\n registerArc3d,\n registerArea,\n registerCircle,\n registerGlyph,\n registerGroup,\n registerImage,\n registerLine,\n registerPath,\n registerPolygon,\n registerPyramid3d,\n registerRect,\n registerRect3d,\n registerRichtext,\n registerShadowRoot,\n registerSymbol,\n registerText,\n registerWrapText\n} from '@visactor/vrender-kits';\n// 导出版本号\n// export const version = \"0.24.2-alpha.1\";\n\nlet registed = false;\nexport function registerForVrender() {\n if (registed) {\n return;\n }\n registed = true;\n // 注册内置组件\n preLoadAllModule();\n\n if (isBrowserEnv()) {\n loadBrowserEnv(container);\n } else if (isNodeEnv()) {\n loadNodeEnv(container);\n }\n registerArc();\n registerArc3d();\n registerArea();\n registerCircle();\n registerGlyph();\n registerGroup();\n registerImage();\n registerLine();\n registerPath();\n registerPolygon();\n registerPyramid3d();\n registerRect();\n registerRect3d();\n registerRichtext();\n registerShadowRoot();\n registerSymbol();\n registerText();\n registerWrapText();\n}\n\nexport * from '@visactor/vrender-core';\nexport * from '@visactor/vrender-kits';\n"]}
package/dist/vtable.js CHANGED
@@ -57479,7 +57479,7 @@
57479
57479
  return TABLE_EVENT_TYPE;
57480
57480
  }
57481
57481
  options;
57482
- version = "0.24.1";
57482
+ version = "0.24.2-alpha.1";
57483
57483
  pagination;
57484
57484
  id = `VTable${Date.now()}`;
57485
57485
  headerStyleCache;
@@ -62443,9 +62443,6 @@
62443
62443
  });
62444
62444
  }
62445
62445
  startEditCell(col, row) {
62446
- if (this.table.isPivotTable() && this.table.isHeader(col, row)) {
62447
- return;
62448
- }
62449
62446
  const editor = this.table.getEditor(col, row);
62450
62447
  if (editor) {
62451
62448
  if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {
@@ -65814,9 +65811,14 @@
65814
65811
  let isCol = false;
65815
65812
  for (let j = 0; j < colArr.length; j++) {
65816
65813
  const dimension = colArr[j];
65817
- if (((isValid$3(highlightDimension.dimensionKey) && dimension.dimensionKey === highlightDimension.dimensionKey) ||
65818
- (isValid$3(highlightDimension.indicatorKey) && dimension.indicatorKey === highlightDimension.indicatorKey)) &&
65819
- dimension.value === highlightDimension.value) {
65814
+ if ((isValid$3(highlightDimension.dimensionKey) &&
65815
+ dimension.dimensionKey === highlightDimension.dimensionKey &&
65816
+ dimension.value === highlightDimension.value) ||
65817
+ (isValid$3(highlightDimension.indicatorKey) &&
65818
+ dimension.indicatorKey === highlightDimension.indicatorKey &&
65819
+ (dimension.value === highlightDimension.value ||
65820
+ !isValid$3(highlightDimension.value) ||
65821
+ !isValid$3(dimension.value)))) {
65820
65822
  colArr = dimension.children;
65821
65823
  colDimension = dimension;
65822
65824
  isCol = true;
@@ -65828,9 +65830,14 @@
65828
65830
  }
65829
65831
  for (let k = 0; k < rowArr.length; k++) {
65830
65832
  const dimension = rowArr[k];
65831
- if (((isValid$3(highlightDimension.dimensionKey) && dimension.dimensionKey === highlightDimension.dimensionKey) ||
65832
- (isValid$3(highlightDimension.indicatorKey) && dimension.indicatorKey === highlightDimension.indicatorKey)) &&
65833
- dimension.value === highlightDimension.value) {
65833
+ if ((isValid$3(highlightDimension.dimensionKey) &&
65834
+ dimension.dimensionKey === highlightDimension.dimensionKey &&
65835
+ dimension.value === highlightDimension.value) ||
65836
+ (isValid$3(highlightDimension.indicatorKey) &&
65837
+ dimension.indicatorKey === highlightDimension.indicatorKey &&
65838
+ (dimension.value === highlightDimension.value ||
65839
+ !isValid$3(highlightDimension.value) ||
65840
+ !isValid$3(dimension.value)))) {
65834
65841
  rowArr = dimension.children;
65835
65842
  rowDimension = dimension;
65836
65843
  break;
@@ -66228,6 +66235,19 @@
66228
66235
  }
66229
66236
  return undefined;
66230
66237
  }
66238
+ changeTreeNodeTitle(col, row, value) {
66239
+ const headerPaths = this.getCellHeaderPaths(col, row);
66240
+ if (headerPaths.rowHeaderPaths.length > 0) {
66241
+ const headerTreeNode = this.getHeadNode(headerPaths.rowHeaderPaths.slice(0, headerPaths.rowHeaderPaths.length));
66242
+ headerTreeNode.value = value;
66243
+ }
66244
+ else if (headerPaths.colHeaderPaths.length > 0) {
66245
+ const headerTreeNode = this.getHeadNode(headerPaths.colHeaderPaths.slice(0, headerPaths.colHeaderPaths.length));
66246
+ headerTreeNode.value = value;
66247
+ }
66248
+ const id = this.getCellId(col, row);
66249
+ this._headerObjectMap[id].title = value;
66250
+ }
66231
66251
  }
66232
66252
  function scaleWholeRangeSize(count, bandwidth, paddingInner, paddingOuter) {
66233
66253
  if (paddingInner === 1) {
@@ -66253,7 +66273,7 @@
66253
66273
  dataConfig;
66254
66274
  records;
66255
66275
  tree = {};
66256
- changedTree = {};
66276
+ beforeChangedTree = {};
66257
66277
  colFlatKeys = {};
66258
66278
  rowFlatKeys = {};
66259
66279
  stringJoinChar = String.fromCharCode(0);
@@ -66339,7 +66359,7 @@
66339
66359
  }
66340
66360
  });
66341
66361
  }
66342
- getTreeNode(rowKey = [], colKey = [], indicator, considerChangedValue = true) {
66362
+ getTreeNode(rowKey = [], colKey = [], indicator, ifChangedValue = true) {
66343
66363
  let flatRowKey;
66344
66364
  let flatColKey;
66345
66365
  if (typeof rowKey === 'string') {
@@ -66370,10 +66390,16 @@
66370
66390
  isHasIndicator && colKey.push(indicator);
66371
66391
  flatColKey = colKey.join(this.stringJoinChar);
66372
66392
  }
66373
- if (considerChangedValue && isValid$3(this.changedTree[flatRowKey]?.[flatColKey])) {
66374
- return { value: this.changedTree[flatRowKey][flatColKey], record: this.tree?.[flatRowKey]?.[flatColKey]?.record };
66393
+ if (ifChangedValue) {
66394
+ return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;
66375
66395
  }
66376
- return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;
66396
+ if (isValid$3(this.beforeChangedTree[flatRowKey]?.[flatColKey])) {
66397
+ return {
66398
+ value: this.beforeChangedTree[flatRowKey][flatColKey].value,
66399
+ record: this.beforeChangedTree[flatRowKey][flatColKey].record
66400
+ };
66401
+ }
66402
+ return undefined;
66377
66403
  }
66378
66404
  changeTreeNodeValue(rowKey = [], colKey = [], indicator, newValue) {
66379
66405
  let flatRowKey;
@@ -66406,13 +66432,45 @@
66406
66432
  isHasIndicator && colKey.push(indicator);
66407
66433
  flatColKey = colKey.join(this.stringJoinChar);
66408
66434
  }
66409
- if (this.changedTree[flatRowKey]) {
66410
- this.changedTree[flatRowKey][flatColKey] = newValue;
66435
+ const oldValue = this.tree[flatRowKey]?.[flatColKey]?.value;
66436
+ const oldRecord = Object.assign({}, this.tree[flatRowKey]?.[flatColKey]?.record);
66437
+ if (this.tree[flatRowKey]?.[flatColKey]?.record) {
66438
+ this.tree[flatRowKey][flatColKey].record[indicator] = newValue;
66439
+ this.tree[flatRowKey][flatColKey].value = newValue;
66411
66440
  }
66412
66441
  else {
66413
- this.changedTree[flatRowKey] = {};
66414
- this.changedTree[flatRowKey][flatColKey] = newValue;
66442
+ if (!this.tree[flatRowKey]) {
66443
+ this.tree[flatRowKey] = {};
66444
+ }
66445
+ this.tree[flatRowKey][flatColKey] = {
66446
+ record: this._buildRecord(rowKey, colKey, indicator, newValue),
66447
+ value: newValue
66448
+ };
66415
66449
  }
66450
+ if (!this.beforeChangedTree[flatRowKey]?.[flatColKey]) {
66451
+ this.beforeChangedTree[flatRowKey] = {};
66452
+ this.beforeChangedTree[flatRowKey][flatColKey] = { record: undefined, value: undefined };
66453
+ this.beforeChangedTree[flatRowKey][flatColKey].record = oldRecord;
66454
+ this.beforeChangedTree[flatRowKey][flatColKey].value = oldValue;
66455
+ }
66456
+ }
66457
+ _buildRecord(rowKey = [], colKey = [], indicator, value) {
66458
+ const record = {};
66459
+ const rowDimensions = this.dataConfig.rows;
66460
+ const colDimensions = this.dataConfig.columns;
66461
+ rowDimensions.forEach((dimension, index) => {
66462
+ if (dimension !== this.dataConfig.indicatorDimensionKey) {
66463
+ record[dimension] = rowKey[index];
66464
+ }
66465
+ });
66466
+ colDimensions.forEach((dimension, index) => {
66467
+ if (dimension !== this.dataConfig.indicatorDimensionKey) {
66468
+ record[dimension] = colKey[index];
66469
+ }
66470
+ });
66471
+ record[indicator] = value;
66472
+ this.records.push(record);
66473
+ return record;
66416
66474
  }
66417
66475
  addRecords(records) {
66418
66476
  for (let i = 0, len = records.length; i < len; i++) {
@@ -66421,6 +66479,24 @@
66421
66479
  }
66422
66480
  this.records.push(records);
66423
66481
  }
66482
+ changeRecordFieldValue(fieldName, value) {
66483
+ let isIndicatorName = false;
66484
+ for (let i = 0; i < this.dataConfig.indicators.length; i++) {
66485
+ if (this.dataConfig.indicators[i] === fieldName) {
66486
+ isIndicatorName = true;
66487
+ }
66488
+ }
66489
+ this.records.forEach(record => {
66490
+ if (isIndicatorName) ;
66491
+ else {
66492
+ record[fieldName] = value;
66493
+ }
66494
+ });
66495
+ this.rowFlatKeys = {};
66496
+ this.colFlatKeys = {};
66497
+ this.tree = {};
66498
+ this.processRecords();
66499
+ }
66424
66500
  }
66425
66501
 
66426
66502
  class Dataset {
@@ -68010,7 +68086,7 @@
68010
68086
  const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68011
68087
  return rowPath.indicatorKey ?? rowPath.value;
68012
68088
  });
68013
- const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, false);
68089
+ const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey);
68014
68090
  return treeNode?.record;
68015
68091
  }
68016
68092
  const rowIndex = this.getBodyIndexByRow(row);
@@ -68019,7 +68095,36 @@
68019
68095
  return dataValue;
68020
68096
  }
68021
68097
  getCellRawRecord(col, row) {
68022
- return this.getCellOriginRecord(col, row);
68098
+ const table = this;
68099
+ if (table.internalProps.layoutMap.isHeader(col, row)) {
68100
+ return undefined;
68101
+ }
68102
+ if (this.dataset) {
68103
+ const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68104
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68105
+ return colPath.indicatorKey ?? colPath.value;
68106
+ });
68107
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68108
+ return rowPath.indicatorKey ?? rowPath.value;
68109
+ });
68110
+ const aggregator = this.dataset.getAggregator(!this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys, this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row));
68111
+ return aggregator.records;
68112
+ }
68113
+ else if (this.flatDataToObjects) {
68114
+ const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68115
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68116
+ return colPath.indicatorKey ?? colPath.value;
68117
+ });
68118
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68119
+ return rowPath.indicatorKey ?? rowPath.value;
68120
+ });
68121
+ const treeNode = this.flatDataToObjects.getTreeNode(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, false);
68122
+ return treeNode?.record;
68123
+ }
68124
+ const rowIndex = this.getBodyIndexByRow(row);
68125
+ const colIndex = this.getBodyIndexByCol(col);
68126
+ const dataValue = this.records[rowIndex]?.[colIndex];
68127
+ return dataValue;
68023
68128
  }
68024
68129
  updateSortRules(sortRules) {
68025
68130
  this.internalProps.dataConfig.sortRules = sortRules;
@@ -68252,8 +68357,15 @@
68252
68357
  this.editorManager.completeEdit();
68253
68358
  }
68254
68359
  getEditor(col, row) {
68255
- const define = this.getBodyColumnDefine(col, row);
68256
- let editorDefine = define?.editor ?? this.options.editor;
68360
+ let editorDefine;
68361
+ if (this.isHeader(col, row) && !this.isCornerHeader(col, row)) {
68362
+ const define = this.getHeaderDefine(col, row);
68363
+ editorDefine = define?.headerEditor ?? this.options.headerEditor;
68364
+ }
68365
+ else {
68366
+ const define = this.getBodyColumnDefine(col, row);
68367
+ editorDefine = define?.editor ?? this.options.editor;
68368
+ }
68257
68369
  if (typeof editorDefine === 'function') {
68258
68370
  const arg = {
68259
68371
  col,
@@ -68292,7 +68404,12 @@
68292
68404
  newValue = parseFloat(value);
68293
68405
  }
68294
68406
  this._changeCellValueToDataSet(col, row, newValue);
68295
- this.scenegraph.updateCellContent(col, row);
68407
+ const range = this.getCellRange(col, row);
68408
+ for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {
68409
+ for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {
68410
+ this.scenegraph.updateCellContent(sCol, sRow);
68411
+ }
68412
+ }
68296
68413
  if (this.widthMode === 'adaptive' || (this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth)) {
68297
68414
  if (this.internalProps._widthResizedColMap.size === 0) {
68298
68415
  this.scenegraph.recalculateColWidths();
@@ -68411,13 +68528,23 @@
68411
68528
  }
68412
68529
  else if (this.flatDataToObjects) {
68413
68530
  const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
68414
- const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68415
- return colPath.indicatorKey ?? colPath.value;
68416
- });
68417
- const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68418
- return rowPath.indicatorKey ?? rowPath.value;
68419
- });
68420
- this.flatDataToObjects.changeTreeNodeValue(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, newValue);
68531
+ if (this.isHeader(col, row)) {
68532
+ this.internalProps.layoutMap.changeTreeNodeTitle(col, row, newValue);
68533
+ this.flatDataToObjects.changeRecordFieldValue(cellDimensionPath.colHeaderPaths?.length
68534
+ ? cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].indicatorKey ??
68535
+ cellDimensionPath.colHeaderPaths[cellDimensionPath.colHeaderPaths.length - 1].dimensionKey
68536
+ : cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].indicatorKey ??
68537
+ cellDimensionPath.rowHeaderPaths[cellDimensionPath.rowHeaderPaths.length - 1].dimensionKey, newValue);
68538
+ }
68539
+ else {
68540
+ const colKeys = cellDimensionPath.colHeaderPaths.map((colPath) => {
68541
+ return colPath.indicatorKey ?? colPath.value;
68542
+ });
68543
+ const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath) => {
68544
+ return rowPath.indicatorKey ?? rowPath.value;
68545
+ });
68546
+ this.flatDataToObjects.changeTreeNodeValue(rowKeys, colKeys, this.internalProps.layoutMap.getBody(col, row).indicatorKey, newValue);
68547
+ }
68421
68548
  }
68422
68549
  else {
68423
68550
  const rowIndex = this.getBodyIndexByRow(row);
@@ -69846,7 +69973,7 @@
69846
69973
  }
69847
69974
 
69848
69975
  registerForVrender();
69849
- const version = "0.24.1";
69976
+ const version = "0.24.2-alpha.1";
69850
69977
  function getIcons() {
69851
69978
  return get$2();
69852
69979
  }